需要帮助使用LINQ Lambda C#进行排序

时间:2017-03-22 16:15:01

标签: c# linq lambda

我有一个项目清单:清单项目; 每个Item都有一个属性Item#,LongID和InventoyBranchItem。 每个InventoyBranchItem都有Item#,Item Quantity和BranchCode。

物品

Item #      Long ID         ItemInventoryLoc
123456      ANBCDDFD        1
999999      BBBBBBBB        1
777777      ATSDFDDF        1

ItemInventoryLoc

Item#       Quantity    BranchCode
123456      6           T1
999999      8           T3
777777      2           T2

我需要按BranchCode排序,然后按LongID排序。我在使用lambda时遇到了麻烦。

List<Item> sortedList = items.OrderBy(x => x.ItemInventory....)
                .thenBy(x => x.LongID).ToList();

我不知道使用什么语法来访问BranchCode。

2 个答案:

答案 0 :(得分:1)

如果您确定Item始终与InventoryBrachItem相关,那么我想您可以这样做以获得BranchCode中的OrderBy

var sortedList = items.OrderBy(x => x.InventoryBrachItems.FirstOrDefault().BranchCode)
                      .ThenBy(x=> x.LongItemNumber);

但是你需要解释更多你订购商品的逻辑,因为它可以与多个InventoryBranchItem

相关联

答案 1 :(得分:0)

我假设您有两个列表:项目 ItemInventoryLoc

您应该加入两个列表,然后对结果进行排序

var qry = from items in itemsList join lockitems in ItemInventoryLocList
    on items.ItemNumber equals lockitems.ItemNumber
    orderby lockitems.BranchCode, items.LongItemNumber
    select new { 
        items.LongItemNumber, 
        lockitems.BranchCode, 
        lockitems.Quantity
     };

.NET Fiddle

中的工作样本