작동하지 않습니다.LINQ 정렬, 나는이 같은 LINQ 쿼리를
i.Sort
속성으로 정렬 된 항목이 있어야합니다. orderby i.Sort
및 i.OrderBy(it => it.Sort)
이 작동하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?
작동하지 않습니다.LINQ 정렬, 나는이 같은 LINQ 쿼리를
i.Sort
속성으로 정렬 된 항목이 있어야합니다. orderby i.Sort
및 i.OrderBy(it => it.Sort)
이 작동하지 않습니다. 이 문제를 어떻게 해결할 수 있습니까?
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를 사용하여 해당 유형에 대해 정의한 다른 순서에 따라).
페이지에 해당 속성 중 페이지 번호가 포함되어 있다고 가정 해 보겠습니다. 이 속성을 "페이젠 넘버"라고 가정 해 봅시다. 그런 다음 '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 번호, 페이지 번호 또는 일부 텍스트가 알파벳순으로 정렬 될 수 있어야합니다.
from i in _db.Items.OfType<Medium>().OrderBy(x => x.Sort)
...