gpt4 book ai didi

c# - Orderby 和 thenby 使用 LINQ

转载 作者:行者123 更新时间:2023-11-30 21:51:21 26 4
gpt4 key购买 nike

我有下面的类别表。

tb类别

CatgID        CatgName
------ --------
1 Catg1
2 Catg2
3 Catg3
4 Catg4

现在我有分类链接到上述类别的项目表

tbItem

ItemID            ItemName           ItemCatg         Priority
------ -------- -------- --------
1 Name 1 1 1
2 Name 2 1 2
3 Name 3 2 1
4 Name 4 3 3
5 Name 5 4 2
6 Name 6 3 1

优先级

1 - High
2 - Medium
3 - Low

现在,当我显示项目数据时,我希望首先显示类别为 Catg1Catg2Catg4 根据它们的优先级,然后根据它们的优先级显示 Catg3 的项目。

我试过下面的 LINQ 表达式,但我没有成功。我对 LINQSQL 的了解不是很深,但这是我能达到的程度。

model.items = db.tbItem.OrderBy(p=>p.ItemCatg).ThenBy(p=>p.Priority).ToList();

有人可以告诉我实现此功能的正确方法吗?

更新

我想在显示时实现以下组合。

ItemID            ItemName           ItemCatg         Priority
------ -------- -------- --------
1 Name 1 1 1
3 Name 3 2 1
2 Name 2 1 2
5 Name 5 4 2
6 Name 6 3 1
4 Name 4 3 3

最佳答案

以下是我过去用过的技巧。您基本上依赖于比较结果,首先按非 3 类别(即假等于 0,真等于 1)然后按优先级排序,然后按类别排序。

tbItems.OrderBy(p=>p.ItemCatg == 3).ThenBy(p=>p.Priority).ThenBy(p=>p.ItemCatg).ToList();

这是一个 .NET Fiddle示例。

这是示例的输出:

ItemID: 1    ItemName: Name 1    ItemCatg: 1    Priority: 1
ItemID: 3 ItemName: Name 3 ItemCatg: 2 Priority: 1
ItemID: 2 ItemName: Name 2 ItemCatg: 1 Priority: 2
ItemID: 5 ItemName: Name 5 ItemCatg: 4 Priority: 2
ItemID: 6 ItemName: Name 6 ItemCatg: 3 Priority: 1
ItemID: 4 ItemName: Name 4 ItemCatg: 3 Priority: 3

关于c# - Orderby 和 thenby 使用 LINQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35728983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com