EF4 linq组项目索引

时间:2011-04-28 08:41:30

标签: c# linq entity-framework-4 linq-to-entities

我有以下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命令中执行。

1 个答案:

答案 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才能在内部支持行索引,但仍然无法在查询中使用行索引。