【问题标题】:Sort Nested List and Dictionary排序嵌套列表和字典
【发布时间】:2019-05-08 02:58:03
【问题描述】:

如何实现List<Dictionary<string, string>> 的排序。

我想根据字典中的第一个元素对列表进行排序。

我的数据看起来像

{
{{PID,A123},{SKU,TA50},{QTY,50}},
{{PID,C123},{SKU,TA52},{QTY,50}},
{{PID,B123},{SKU,TA53},{QTY,50}},
{{PID,A222},{SKU,TA54},{QTY,50}}
}

我试图让输出看起来像

{
{{PID,A123},{SKU,TA50},{QTY,50}},
{{PID,A222},{SKU,TA54},{QTY,50}},
{{PID,B123},{SKU,TA53},{QTY,50}},
{{PID,C123},{SKU,TA52},{QTY,50}}
}

尝试过的解决方案 list.Sort - 由于内容是字典,因此无法正常工作。 list.OrderBy - 方法不可用。

正在开发的技术 - Visual Studio Community 2017,.NET 4.6.1,控制台应用程序

【问题讨论】:

  • uses System.Linq;得到OrderBy
  • "list.OrderBy - 方法不可用。" - 这是一种扩展方法。你有using System.Linq;吗?
  • 由于字典元素没有顺序,所以没有“字典中的第一个元素”。
  • @SananFataliyev Yeh 我编辑了那个
  • 如果您需要有序集合,则使用字典听起来像是代码异味。它的顺序不稳定,添加或删除项目后可能会得到不同的结果。

标签: c# dictionary


【解决方案1】:

Linq OrderBy() 结合字典的关键访问["PID"] 怎么样

items = items.OrderBy(x => x["PID"]).ToList();

所以Dictionaies 是有序的,但它们自己是have no order

【讨论】:

  • 谢谢您的回答,我只是想知道我是否想说过滤此列表并仅在“SKU”=“TA50”处获取值,我该如何实现?
  • @AngadArora Where(x => x["SKU"] == "TA50")
【解决方案2】:

如果要按字典键对列表进行排序,那么

var result = list.OrderBy(dict => dict["PID"]).ToList();

您需要在程序中引用using System.Linq; 才能在智能感知中使用OrderBy

【讨论】:

  • 感谢您抽出宝贵时间,根据社区,如果两个答案是正确且相同的解决方案,我必须选择最先出现的答案。但是非常感谢您的支持。
  • @AngadArora,很高兴听到...没问题.. fubo 和我的答案仅在几秒钟的差异上发布...欢迎 :)
猜你喜欢
  • 2012-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-17
  • 2019-12-02
  • 1970-01-01
相关资源
最近更新 更多