2013-11-04 1 views
1

그래서 저는 데이터 뷰를 통해 대행사와 관련된 정보를 가져오고 대행사별로 데이터를 그룹화하므로 한 번만 표시되고 사전 순으로 정렬됩니다. 레벨별로. 레벨은 레벨 1, 레벨 2, 레벨 3을 의미합니다. Linq에서 이것을 수행 할 수 있습니까? 그렇다면 어떻게? 감사.Linq : 레벨 별 ID 순으로 정렬하고 알파벳순으로 문제가 발생합니다.

EnumerableRowCollection<DataRow> query = 
    from agency in dtAllContacts.AsEnumerable() 
    orderby agency.Field<Int32?>("ID") == null ? 0 : agency.Field<Int32>("ID") 
    orderby agency.Field<Int32>("Level") 
    select agency; 

답변

1

처음으로 ID별로 컬렉션을 정렬하고 다시 정렬하지 않고 수준별로 정렬하기 때문에 현재 코드가 작동하지 않습니다. 필요한 것은 ID와 레벨별로 동시에 정렬하는 것입니다.

from agency in dtAllContacts.AsEnumerable() 
orderby agency.Field<Int32?>("ID") == null ? 0 : agency.Field<Int32>("ID"), 
     agency.Field<Int32>("Level") 
select agency; 

ThenBy 연산자를 생성합니다 : 그래서, 당신은 하나의 orderby 운영자가 필요합니다. 또한 당신이 nullable 형식의 GetValueOrDefault 방법을 사용하여 첫 번째 조건을 단순화 할 수 있습니다 : 당신도 사용할 수 있다고 생각

orderby agency.Field<int?>("ID").GetValueOrDefault(), 
     agency.Field<int>("Level") 
+1

을'("ID") 을 agency.Field? 0 '이다. – pescolino

+0

@pescolino 옙, 그 좋은 옵션도 –

+0

안녕 busyberezovsky, 그룹화는 어떨까요? ("나는 기관별로 데이터를 그룹화하고 싶습니다."). –