2011-04-28 6 views
1

나는 다음과 같은 ER 모델이 있습니다EF4 LINQ 그룹 항목 색인

항목 : 아이디, 사용자 아이디, ... 사실 : 아이디, 엔트리 ID, 그룹 ID, 데이터 형식, DataValue ... 내가 가진

을 EF4 데이터 컨텍스트에 다음 LINQ 쿼리 :

linq = linq.Select((Group,Index) => new {Group, Index}) 
:

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; 

는이 같은 각 그룹에 인덱스를 할당 할

하지만 System.NotSupportedException이 발생합니다. 거기에 linq에서 달성하기 위해 다른 방법이 있습니까?

나는 코드에서 더 자세히 쿼리를 확장하고 1 sql 명령에서 실행하기를 원하기 때문에 객체에 linq을 사용하고 싶지 않습니다 (예 : linq = linq.ToList() 호출).

+0

어떻게 더 확장 하시겠습니까? –

+0

linq = linq.Where (...)를 수행하여 결과를 필터링합니다. – m0sa

답변

3

Linq to EF는 행 색인화를 사용할 수 없습니다 (색인을 사용한 선택은 지원되지 않습니다). 당신은 개체에 linq에서 그것을해야합니다.

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

Linq에 - 투 - 엔티티는 주문 된 쿼리에 Take()Skip() 방법을 사용하지만 여전히 쿼리에 행 인덱스를 사용할 수없는 경우에만 내부 행 인덱싱을 지원합니다.