C# 从每个区域中选择前 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"));

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

我写过类似的东西

var query = productList.OrderByDescending(p => p.ProductPrice).
 Take(2).GroupBy(r => r.Region);

最佳答案

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

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

关于C# 从每个区域中选择前 2 个产品详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1835124/

相关文章:

c# - 如何使用 InstallShield 2009 显示消息框

c# - 在基页类中使用用户控件

c# - 具有唯一键和值的组数据

linq - AsQueryable 方法是否在新的 Mongodb C# 驱动程序 2.0rc 中离开?

c# - 一台电脑可以同时启动多少个Selenium驱动的自动化浏览器

c# - 无法使用 Selenium 和 C# 找到 Google 主页上的搜索框元素

c# - WPF Tab 键导航

c# - 使用 LINQ 我如何连接集合中项目的字符串属性

c# - 使用扩展方法访问方法的属性

c# - 为什么我的 DTO 为空?