我有以下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到ef中还有其他方法可以实现吗?
我不想诉诸linq到对象(例如通过调用linq = linq.ToList()
),因为我在代码中进一步向下扩展查询并希望它在1 sql命令中执行。
答案 0 :(得分:3)
Linq to EF无法使用行索引(不支持使用索引进行选择)。你必须在linq中对象进行。
var query = // your grouping query;
var linq = query.AsEnumerable().Select((Group,Index) => new {Group, Index});
只有在有序可查询时使用Take()
和Skip()
方法,Linq-to-entities才能在内部支持行索引,但仍然无法在查询中使用行索引。