我有以下ER模型:
条目:Id, UserId, ....事实:Id, EntryId, GroupId, DataType, DataValue…
我对EF4数据上下文有以下linq查询:
var linq =
from entry in DataContext.Entry
where entry.UserId== User.Identity.UserId
from fact in entry.Facts
group fact by new { fact.Entry, fact.GroupId } into g
select g;
我想给每个组分配一个索引,像这样:
linq = linq.Select((Group,Index) => new {Group, Index})
但是我得到System.NotSupportedException。还有其他的方法来实现这个目标吗?
我不想诉诸linq对象(例如通过调用linq = linq.ToList()
),因为我在代码中进一步扩展查询,并希望它在1 sql命令中执行。
Linq to EF不能使用行索引(不支持select with indexes)。
var query = // your grouping query;
var linq = query.AsEnumerable().Select((Group,Index) => new {Group, Index});
Linq-to-entities内部支持行索引,只有当你在有序查询中使用Take()
和Skip()
方法时,你仍然不能在查询中使用行索引。