Linq orderby在多列上,其中一列可能为null

时间:2011-05-15 12:04:58

标签: linq

我有一个包含2个字段的表:[名称]和[订单]

[Order]可以为null

使用LINQ,我希望能够通过[Order]订购,或者如果[Order]为null,则按[Name]

排序

这是我的非工作代码:

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)

2 个答案:

答案 0 :(得分:4)

您的意思是如果Order对于单个元素为空,请使用Name吗?如果是这样,我想想你想要的:

from ft in FacetTypes
orderby ft.Order ?? ft.Name
select ft;

这只是使用C#2中引入的 null-coalescing operator

答案 1 :(得分:1)

这个怎么样:

var resultSet = 
     ft.Order == null ? 
          FacetTypes.OrderBy(item => item.Name) : 
          FacetTypes.OrderBy(item => item.Order);