2015-02-23 3 views
1

На данный момент я использую LINQ для заказа списка людей в телефонной книге. В настоящее время я заказываю список по филиалу, а затем по их полному имени (последний, первый). Я добавляю новое свойство к объекту person, называемому местоположением, которое имеет те же значения, что и ветка, поэтому я хочу включить это в свой элемент LINQ, но я не уверен, как это сделать.Использование LINQ для разных свойств объекта

Вот что я в настоящее время:

phoneList.OrderBy(e => branchOrder.IndexOf(e.Branch)).ThenByDescending(e => e.FirstName == null).ThenBy(e => e.FullName) 

В заявлении LINQ вы видите функцию branchOrder.IndexOf. BranchOrder - это мой определенный список всех ветвей в числовом/алфавитном порядке.

Как я могу заказать как branchOrder.IndexOf(e.Branch), так и branchOrder.IndexOf(e.Location)?

Примечание: Местоположение может быть NULL, но если это не NULL, тогда следует использовать местоположение, а не e.Branch.

ответ

7

Используйте оператор нулевой коалесценции.

phoneList.OrderBy(e => branchOrder.IndexOf(e.Location ?? e.Branch)) 
+1

Большое спасибо! – user3788671

3

Кажется простым условием должно работать ...

branchOrder.IndexOf(e.Location == null ? e.Branch : e.Location) 
+0

Спасибо! Это сработало – user3788671

Смежные вопросы