使用LINQ命令对象的不同属性

时间:2015-02-23 20:32:25

标签: c# linq

截至目前,我正在使用LINQ订购电话簿中的人员列表。目前,我按分支排序列表,然后按其全名(最后,第一个)排序。我正在为名为location的person对象添加一个新属性,该对象具有与分支相同的值,因此我想将其包含在我的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,则应该使用Location而不是e.Branch。

2 个答案:

答案 0 :(得分:7)

使用null合并运算符。

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

答案 1 :(得分:3)

似乎一个简单的条件应该有效...

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