LINQ:字段不是引用字段

时间:2010-12-07 19:05:05

标签: linq data-structures where-clause iqueryable

我有一张IQueryable列表。我正在尝试将此列表拆分为第一个列表中某个字段(例如fieldnum)上的IQueryable匹配数组...

例如,如果fieldnum == 1,它应该进入数组[1]。我正在使用Where()基于此字段进行过滤,它看起来像这样:

var allItems = FillListofMyObjects();        
var Filtered = new List<IQueryable<myObject>(MAX+1);

for (var i = 1; i <= MAX; i++)
{
        var sublist = allItems.Where(e => e.fieldnum == i);
        if (sublist.Count() == 0) continue;

        Filtered[i] = sublist;
}

但是,我在if行上收到错误字段“t1.fieldnum”不是参考字段。单步执行调试器显示错误实际发生在行之前(Where()方法),但不管怎样,我不知道我做错了什么。

我对LINQ很陌生,所以如果我这样做了,请告诉我,谢谢!

2 个答案:

答案 0 :(得分:4)

为什么不使用ToLookup

var allItemsPerFieldNum = allItems.ToLookup(e => e.fieldnum);

每次获得值时,是否需要重新评估表达式?

答案 1 :(得分:2)

为什么不使用字典?

var dictionary = allItems.ToDictionar(y => y.fieldnum);