Linq orderby 对多列进行排序,其中一列可能为 null
我有一个包含 2 个字段的表: [Name] 和 [Order]
[Order] 可以为 null
使用 LINQ,我希望能够按 [Order] 排序,或者如果 [Order] 为 null,则按 [ 排序名称]
这是我的非工作代码:
from ft in FacetTypes
orderby ft.Name, ft.Order ascending
select ft
这在 linq 中可能吗?
编辑:
[订单] 是 int? [Name] 是字符串
该查询是实体框架 4 之一。
回答:
这就是我最终要做的工作。
ft.Order == null ? ft.Name : SqlFunctions.StringConvert((double)ft.Order)
I have a table with 2 fields in it: [Name] and [Order]
[Order] can be null
Using LINQ, I'd like to be able to order by [Order] or if [Order] is null then order by [Name]
here is my non-working code:
from ft in FacetTypes
orderby ft.Name, ft.Order ascending
select ft
Is this possible in linq?
EDIT:
[Order] is int?
[Name] is string
The query is an Entity Framework 4 one.
ANSWER:
This is what I eventually got to work.
ft.Order == null ? ft.Name : SqlFunctions.StringConvert((double)ft.Order)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您的意思是如果单个元素的
Order
为 null,则使用Name
代替?如果是这样,我认为您想要:这只是使用 C# 2 中引入的空合并运算符。
Do you mean if
Order
is null for a single element, useName
instead? If so, I think you want:This is just using the null-coalescing operator introduced in C# 2.
这个怎么样:
How about this: