C#从每个地区选择前2个产品详细信息

use*_*675 2 c# linq

从给定的产品列表中

List<Product> productList = new List<Product>();
productList.Add(new Product("P001", 34566.78M, "North"));
productList.Add(new Product("P004", 4566.78M, "East"));
productList.Add(new Product("P007", 14566.78M, "South"));

productList.Add(new Product("P010", 2456.178M, "South"));
productList.Add(new Product("P011", 341566.78M, "North"));
productList.Add(new Product("P006", 64566.878M, "East"));

productList.Add(new Product("P00188", 664566.78M, "East"));
productList.Add(new Product("P00111", 3444566.78M, "North"));
productList.Add(new Product("P00134", 3234566.78M, "South"));
Run Code Online (Sandbox Code Playgroud)

如何从每个地区选择前2产品(基于价格)?

我写过类似的东西

var query = productList.OrderByDescending(p => p.ProductPrice).
 Take(2).GroupBy(r => r.Region);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 8

首先按地区分组,然后在每个组内执行OrderBy/Take.例如:

var query = productList
   .GroupBy(r => r.Region)
   .Select(group => new { Region = group.Key,
                          Orders = group.OrderByDescending(p => p.ProductPrice)
                                        .Take(2) });
Run Code Online (Sandbox Code Playgroud)

  • 乔恩双向飞碟总是在那里进行救援!:) (2认同)