2011-04-28 50 views
1

我有以下ER模型:EF4 LINQ組項目索引

項:ID,用戶ID,.... 事實:ID,ENTRYID,GroupId的,數據類型,DataValue ...

我有以下LINQ查詢到EF4數據上下文:

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 = linq.ToList()),因爲我在代碼中進一步向下延伸查詢,並希望它在1個sql命令中執行。

+0

你想如何進一步擴展它? – 2011-04-28 09:01:37

+0

通過執行linq = linq.Where(...)來過濾結果 – m0sa 2011-04-28 09:24:57

回答

3

Linq to EF不能使用行索引(不支持使用索引進行選擇)。你必須用linq來做對象。

var query = // your grouping query; 
var linq = query.AsEnumerable().Select((Group,Index) => new {Group, Index}); 

LINQ到實體支持排索引內部只有在使用上訂購可查詢Take()Skip()方法,但仍然不能在查詢中使用行索引。