。与LINQ关于自定义集合的地方?
我试图返回一个项目集合,从现有的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>
,你不能改变的。显式投射,因为您尝试不起作用,因为通过每个ConcurrentHashSet
是IEnumerable
(继承),IEnumerable
不一定是ConcurrentHashSet
。编译器不能说。
-
要么实例化一个新的
ConcurrentHashSet
(假设它有一个 构造函数接收IEnumerable
,它应该有):return new ConcurrentHashSet<Item>(Items.Where(x => x.HasLoaded && x.Id == id));
- 或更改方法返回
IEnumerable<Item>
代码下面返回一个集合,因为它是可以在foreach中枚举的:
public class Test
{
ConcurrentHashSet hashSet = new ConcurrentHashSet();
public Test()
{
foreach (ConcurrentHashSet set in hashSet.GetItemsById(123))
{
}
}
}
public class ConcurrentHashSet : HashSet<ConcurrentHashSet>
{
public Boolean HasLoaded { get; set; }
public int Id { get; set; }
public List<ConcurrentHashSet> GetItemsById(int id)
{
return this.Where(x => x.HasLoaded && x.Id == id).ToList();
}
}
请求是设法返回'ConcurrentHashSet
看最新的代码。几个小时前做了更改。 – jdweng
提交者想要返回一个'ConcurrentHashSet
你可以为你的ConcurrentHashSet添加返回IEnumerable的代码吗? “项目”的类型是什么? –
为什么你需要“转换”它?为什么操作你需要这样做IEnumerable '不提供? –
标题明确指出,它是一个自定义类型,但继承IEnumerable。我需要转换它,因为.Where上的返回类型是可枚举的,它必须是ConcurrentHashSet。 – game