繁体   English   中英

如何使用 Linq 使用内部的子字典对列表进行排序?

[英]How to order a list using the child dictionary inside using Linq?

public class A {
  public string Name {get; set;}
  public Dictionary<string, decimal> B {get; set;}
}

如何使用 B 中的值订购 List< A >? 例子:

var list = new List<A>(){
  new A(){
    Name = "data1",
    B = new Dictionary<string, decimal>()
      {"QTY", 10},
      {"PRICE", 20}
  },
  new A(){
    Name = "data2",
    B = new Dictionary<string, decimal>()
      {"QTY", 100},
      {"PRICE", 200}
  },
};

**我想按“数量”升序对列表进行排序。

检查值并确保密钥存在于字典中

 var sortONPrice = list.OrderBy(x => x.B.ContainsKey("QTY") ? x.B["QTY"]:0);

如果不是,则提供一个值,我选择零,但它可以是任何任意值。

假设你有一个var list = new List<A>() ,你想要

var ordered = list.OrderBy(x => x.B.First(xx => xx.Key == "QTY").Value);

当然,其中不包括任何空检查或检查您的字典以验证密钥QTY存在。 如果您不确定所有项目是否存在QTY您将需要FirstOrDefault而不是First ,并进行相应处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM