代码之家  ›  专栏  ›  技术社区  ›  Huma Ali

LINQ中的分组列表

  •  1
  • Huma Ali  · 技术社区  · 6 年前

    我有以下班级的名单:

    public class PostOrderDataModel
    {
        public string OCN { get; set; }
        public string Quantity { get; set; }
        public string VerticalTypeName { get; set; }
        public Dictionary<string, string> VerticalTypeQuantity { get; set; }
    }
    

    具有具有相同OCN的多个实例:

    List<PostOrderDataModel> lstPostOrderDataModel = new List<PostOrderDataModel>();
    
    lstPostOrderDataModel[0] = new PostOrderDataModel { OCN = "AX", Quantity = "1", VerticalTypeName = "Internet", VerticalTypeQuantity = null} ; 
    lstPostOrderDataModel[1] = new PostOrderDataModel { OCN = "AX", Quantity = "2", VerticalTypeName = "Video", VerticalTypeQuantity = null}; 
    lstPostOrderDataModel[2] = new PostOrderDataModel { OCN = "BX", Quantity = "2", VerticalTypeName = "Phone", VerticalTypeQuantity = null}; 
    

    key 数量为 value VerticalTypeQuantity ?

    var results = lstPostOrderDataModel.GroupBy(
        p => p.OCN,
        p => p.VerticalTypeName,
        (key, g) => new { OCN = key, VerticalTypeName = g.ToList() });
    

    上面的代码仅针对每个OCN提供VerticalTypeName。我也想要数量,这样我就可以在字典里加上。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Ousmane D.    6 年前

    元素选择器应该是 p => p p => p.VerticalTypeName . 完成后,就可以填充 VerticalTypeQuantity 详情如下:

     var results = lstPostOrderDataModel.GroupBy(
                    p => p.OCN,
                    p => p,
                    (key, g) => new { 
                           OCN = key, 
                          VerticalTypeQuantity = g.ToDictionary(e => e.VerticalTypeName,  
                             e => e.Quantity) 
                    });