如何在LINQ中按案例排序 [英] How Order by Case in LINQ
本文介绍了如何在LINQ中按案例排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个答案实体框架OrderBy"CASE WHEN" ,但这仅处理两个选择
I have this answer Entity framework OrderBy "CASE WHEN" but this only handle two options
var p = ctx.People.OrderBy(p => (p.IsQualityNetwork == 1 || p.IsEmployee == 1) ? 0 : 1)
.ThenBy(p => p.Name);
我有一个文本字段,希望行按特定顺序显示.在sql中,我会这样做:
I have a text field and want rows appear on an specific order. In sql I would do:
ORDER BY CASE when name = "ca" then 1
when name = "po" then 2
when name = "pe" then 3
when name = "ps" then 4
when name = "st" then 5
when name = "mu" then 6
END
推荐答案
如何创建排序顺序的地图?
How about creating a map of your sort order?
var sortOrder = new Dictionary<string,int>
{
{ "ca", 1 },
{ "po", 2 },
{ "pe", 3 },
{ "ps", 4 },
{ "st", 5 },
{ "mu", 6 }
};
var defaultOrder = sortOrder.Max(x => x.Value) + 1;
var sortedPeople = ctx
.People
.AsEnumerable()
.OrderBy(p => (p.IsQualityNetwork == 1 || p.IsEmployee == 1) ? 0 : 1)
.ThenBy(p => sortOrder.TryGetValue(p.Name, out var order) ? order : defaultOrder);
这篇关于如何在LINQ中按案例排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文