我有一个包含 2 个字段的表:[名称] 和 [订单]
[订单] 可以为空
使用 LINQ,我希望能够按 [顺序] 排序,或者如果 [顺序] 为空,则按 [名称] 排序
这是我的非工作代码:
from ft in FacetTypes
orderby ft.Name, ft.Order ascending
select ft
这在 linq 中可能吗?
编辑:
[订单] 是 int?[名称] 是字符串
该查询是实体框架 4 查询。
答:
这就是我最终开始工作的原因。
ft.Order == null ? ft.Name : SqlFunctions.StringConvert((double)ft.Order)
你的意思是如果Order
对于单个元素为 null,请使用 Name
代替?如果是这样,我认为您想要:
from ft in FacetTypes
orderby ft.Order ?? ft.Name
select ft;
这只是使用 C# 2 中引入的空合并运算符。
这个怎么样:
var resultSet =
ft.Order == null ?
FacetTypes.OrderBy(item => item.Name) :
FacetTypes.OrderBy(item => item.Order);