• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

。与LINQ关于自定义集合的地方?

c/c++ 来源:game 6次浏览

我试图返回一个项目集合,从现有的ConcurrentHashSet,但只选择由某个ID的项目,我已经编写了LINQ的编码,我唯一挣扎的是它返回IEnumerable和我有一个自定义ConcurrentHashSet类,我不确定如何转换它?。与LINQ关于自定义集合的地方?

我试着用(ConcurrentHashSet)铸造,但它没有工作,我ConcurrentHashSet确实实现IEnumerable所以我猜有可能..

public ConcurrentHashSet<Item> GetItemsById(int id) 
{ 
    return Items.Where(x => x.HasLoaded && x.Id == id); 
} 


===========解决方案如下:

.Where返回IEnumerable<T>,你不能改变的。显式投射,因为您尝试不起作用,因为通过每个ConcurrentHashSetIEnumerable(继承),IEnumerable不一定是ConcurrentHashSet。编译器不能说。

  • 要么实例化一个新的ConcurrentHashSet(假设它有一个 构造函数接收IEnumerable,它应该有):

    return new ConcurrentHashSet<Item>(Items.Where(x => x.HasLoaded && x.Id == id)); 
    
  • 或更改方法返回IEnumerable<Item>

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)