【发布时间】:2012-07-01 02:40:11
【问题描述】:
给定以下类:
public class GenClass<T>
{
private List<T> ItemsList {get;set;}
public Predicate<T> SomeCondition {get;set;}
public bool UsePredicate {get;set;}
public List<T> Items
{
get { //CODE Goes here; }
}
}
我需要一种方法让列表使用SomeConditionPredicate 并仅返回与条件匹配的项目,但前提是布尔UsePredicate 为真。我知道我可以为此使用 LINQ,问题是每次我使用 LINQ 查询时都会得到一个不同的 IEnumerable 实例,这需要是一个属性,因此我需要能够访问列表的同一个实例从课外,因为我将添加和删除项目,而我不能用 .Where 的结果来做到这一点,例如。
我在想一个自定义的IList<T>,但我不太确定该怎么做。
【问题讨论】:
-
如何将 Enumerable 成员设为静态?
-
那么为什么获取不同的 IEnumerable 会成为问题?
-
这是一个问题,因为如果我从类外部执行 GenClass.Items.Add(xxx),则新项目永远不会添加到真正的列表中,因为 GenClass.Items 不是列表本身,而是LinQ 返回的不同 IEnumerable。
标签: c# generics collections