Явно Можно ли использовать LINQ OrderBy так:LINQ - OrderBy
.OrderBy(x=>(x.SourceID == 3), (x.SourceID == 2), (x=>x.SourceID == 4), (x.SourceID == 1)).ToList();
Так закажу их 3, 2, 4, 1?
Явно Можно ли использовать LINQ OrderBy так:LINQ - OrderBy
.OrderBy(x=>(x.SourceID == 3), (x.SourceID == 2), (x=>x.SourceID == 4), (x.SourceID == 1)).ToList();
Так закажу их 3, 2, 4, 1?
Принимая ответ Йоахима Isaksson в выше, это может быть завернуты в метод расширения:
public static class ListExtensions
{
public static List<Source> SortByCustomOrder(this List<Source> list, List<int> sortOrder)
{
return list.OrderBy(x => sortOrder.IndexOf(x.SourceId)).ToList();
}
}
замены источника с классом и x.SourceId с вашей собственностью
Использование:
// the sort order
var sortOrder = new List<int> { 3, 2, 4, 1, 6, 5 };
var results = sources.SortByCustomOrder(sortOrder);
Это решение сработало! – CallumVass
Нет, это не действительное выражение лямбда. То, что вы могли бы сделать, это нечто подобное;
var sortOrder = new List<int> {3, 2, 4, 1};
var result = bop.OrderBy(x=> sortOrder.IndexOf(x.SourceID)).ToList();
Если вы хотите продлить это делать специальные вещи, с неизвестными (они в конечном итоге первый в настоящее время), вы можете просто сделать метод, который делает определение порядка сортировки и использовать вместо.
Когда я пытаюсь это сделать, я получаю: LINQ to Entities не распознает метод Int32 IndexOf (Int32), и этот метод не может быть переведен в выражение хранилища. – CallumVass
Ах, тогда ваш поставщик Linq (Linq2NHibernate? Linq2Entities?) Не поддерживает IndexOf. Что является основным поставщиком Linq? –
Как бы это узнать? – CallumVass
Я никогда не знал, что у «OrderBy» было такое расширение. – Bastardo
Это не что-то похожее на то, что я могу использовать для явного упорядочения списка сложного типа данных? – CallumVass
try OrderBy(). ThenBy() – hyp