截至目前,我正在使用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。
答案 0 :(得分:7)
使用null合并运算符。
phoneList.OrderBy(e => branchOrder.IndexOf(e.Location ?? e.Branch))
答案 1 :(得分:3)
似乎一个简单的条件应该有效...
branchOrder.IndexOf(e.Location == null ? e.Branch : e.Location)