我有一个名为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/

10-11 03:21