답변

2

Linq로 정렬 할 때 일반적으로 OrderBy 속성을 제공하고 정렬 기능이 아닌 IComparer을 제공합니다. 예 :

class Person { 
    public int Age {get; set;} 
} 

public static void Main() { 
    var ps = new List<Person>(); 
    ps.Add(new Person{Age = 1}); 
    ps.Add(new Person{Age = 5}); 
    ps.Add(new Person{Age = 3}); 

    var sorted = ps.OrderBy(p => p.Age); 

    foreach(p in sorted) { 
     Console.WriteLine(p.Age); 
    } 
} 

여기서 Linq는 정수를 올바르게 정렬하는 방법을 알고 있습니다.

정확히 어떤 내용 (정확히 무엇이 i.Sort인지, 그 용도는 무엇인지, 무엇을하고 싶은지)을 지정하지 않으면 문제에 더 구체적으로 적용하기 어려울 수 있습니다.

그러나, 나는 당신이 OrderBy을 오해하는 확신 : 당신이 그것을 개체이 시퀀스에 포함 된 속성을 식별하는 람다 식을 제공해야하고 Linq에가의 일반적인 순서에 따라 순서를 정렬합니다 해당 속성의 유형 (또는 IComparer를 사용하여 해당 유형에 대해 정의한 다른 순서에 따라).

0

페이지에 해당 속성 중 페이지 번호가 포함되어 있다고 가정 해 보겠습니다. 이 속성을 "페이젠 넘버"라고 가정 해 봅시다. 그런 다음 'where'와 'select'줄 사이에 다음과 같은 'orderby'줄을 추가합니다.

// (snip...) 
where i != null && i.Type == 1 && i.Published == true && p.PageId == 2 
orderby p.pagenumber 
select p 

어쩌면 페이지 번호가 없어도 페이지 제목 만있을 수 있습니다. 거의 동일한 일을 할 것입니다 :

where i != null && i.Type == 1 && i.Published == true && p.PageId == 2 
orderby p.title 
select p 

코드를 읽는 것만으로는 어떤 기준을 정렬에 사용해야하는지 알 수 없습니다. 정렬 된 요소, ID 번호, 페이지 번호 또는 일부 텍스트가 알파벳순으로 정렬 될 수 있어야합니다.

0
from i in _db.Items.OfType<Medium>().OrderBy(x => x.Sort) 
...