我有一个名为ItemCollection
的集合,看起来像:
public class ItemCollection : List<Item>
{
}
Item
具有一个称为MyProperty
的属性:public class Item
{
public bool MyProperty { get; set; }
}
我也有一个具有
ItemManager
方法的GetItems
返回一个ItemCollection
的方法。现在,我只想在
ItemCollection
设置为true的情况下从我的MyProperty
获取项目。我试过了:
ItemCollection ic = ItemManager.GetItems().Where(i => i.MyProperty);
不幸的是
Where
部分不起作用。虽然i
引用了Item
,但我得到了错误无法将类型Item隐式转换为ItemCollection。
如何过滤返回的
ItemCollection
以仅包含将Item
设置为true的MyProperty
? 最佳答案
扩展功能也是很好的解决方案:
public static class Dummy {
public static ItemCollection ToItemCollection(this IEnumerable<Item> Items)
{
var ic = new ItemCollection();
ic.AddRange(Items);
return ic;
}
}
因此,您可以通过以下方式获得结果:
ItemCollection ic = ItemManager.GetItems().Where(i => i.MyProperty).ToItemCollection();
关于c# - 如何仅从某些属性设置为true的列表中选择项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23655472/