단순히 내 쿼리의 반환 된 결과에 대해 행 번호를 포함하고 싶습니다. LINQ 표시 행 번호
는 내가 달성하기 위해 노력하고 무엇을 설명하지만, 나에게http://vaultofthoughts.net/LINQRowNumberColumn.aspx
가 MS SQL I에서
"식 트리 할당 연산자를 포함 할 수 없습니다"예외를 제공하는 다음과 같은 게시물을 발견 ROWNUMBER() 함수를 사용하기 만하면 LINQ에서 해당 함수를 찾고 있습니다.
단순히 내 쿼리의 반환 된 결과에 대해 행 번호를 포함하고 싶습니다. LINQ 표시 행 번호
는 내가 달성하기 위해 노력하고 무엇을 설명하지만, 나에게http://vaultofthoughts.net/LINQRowNumberColumn.aspx
가 MS SQL I에서
"식 트리 할당 연산자를 포함 할 수 없습니다"예외를 제공하는 다음과 같은 게시물을 발견 ROWNUMBER() 함수를 사용하기 만하면 LINQ에서 해당 함수를 찾고 있습니다.
사용 AsEnumerable()
이 클라이언트에서 쿼리의 마지막 부분을 평가하기 위해, 그 마지막 부분에서 카운터 열 추가
int rowNo = 0;
var results = (from data in db.Data
// Add any processing to be performed server side
select data)
.AsEnumerable()
.Select(d => new { Data = d, Count = ++rowNo });
LINQ to SQL을 사용하면 SQL 함수를 매핑 할 수 있습니다.
public partial class YourDataContext : DatContext
{
[Function(Name = "ROWNUMBER")]
public int RowNumber()
{
throw InvalidOperationException("Not called directly.");
}
}
을 그리고 다음과 같이 쿼리를 작성 : :이 테스트하지했습니다 동안, 나는이 구조가 작동합니다 생각
from author in db.Authors
select new { Lp = db.RowNumber(), Name = author.Name };
내가 SQL에 LINQ가 지원 여부를 모르겠어요를 (하지만 propably 것입니다)하지만,에 overload있다 Queryable.Select 인덱서를 사용하여 람다를 허용하는 메서드입니다.
내가 몇 가지 테스트를 실행하지만, SQL 불행히도 LINQ는이 오버로드 (3.5sp1 및 4.0 모두)를 지원하지 않습니다 :
db.Authors.Select((author, index) => new
{
Lp = index, Name = author.Name
});
UPDATE를 다음과 같이 쿼리를 작성할 수 있습니다. 이 메시지와 함께 NotSupportedException
를 던졌습니다 :
지원되지 않는 과부하가 '선택'쿼리 연산자에 사용됩니다.
-1 : 위임자에게 색인을 전달하는 'Queryable.Select'가 없습니다. – Richard
@ 리차드 : 당신도 이것을 확인하는 것을 괴롭 혔습니까? 여기에 대해 제가 이야기 한 오버로드가 있습니다 : http://msdn.microsoft.com/en-us/library/bb534638.aspx. 귀하의 부정 투표를 재평가하십시오. – Steven
나는 확인을 보았습니다. (하지만 지금은 어디에서 찾을 수 없습니다.) ORM은 일반적으로 그것을 구현하지 않습니다. http://stackoverflow.com/questions/1873850/which-orm-tools-support-this-version-of-queryable-select-extension-method/1905527 – Richard
사용자 고유의 LINQ 쿼리를 사용할 수 있습니까? – Jonathan