C# 查找名为LINQ的最低价格退货的产品
我是LINQ的新手,我试图在列表中找到最低的价格并返回它的名称 我一直在搜索,没有找到任何我可以使用的东西 该列表属于类类别,但我必须在main中写出结果 这是微软Visual Studio中的一个C 我必须从中找到最低价格的列表如下:C# 查找名为LINQ的最低价格退货的产品,c#,linq,C#,Linq,我是LINQ的新手,我试图在列表中找到最低的价格并返回它的名称 我一直在搜索,没有找到任何我可以使用的东西 该列表属于类类别,但我必须在main中写出结果 这是微软Visual Studio中的一个C 我必须从中找到最低价格的列表如下: public static IEnumerable<Product> GetProducts( ) { List<Product> products = new List<Product>( );
public static IEnumerable<Product> GetProducts( )
{
List<Product> products = new List<Product>( );
products.Add( new Product { Name = "Milk", Price = 90, CategoryID = 4, ID = 1 } );
products.Add( new Product { Name = "Cheese", Price = 130, CategoryID = 4, ID = 2 } );
products.Add( new Product { Name = "Butter", Price = 110, CategoryID = 4, ID = 3 } );
products.Add( new Product { Name = "Apple juice", Price = 230, CategoryID = 1, ID = 4 } );
products.Add( new Product { Name = "Grape juice", Price = 240, CategoryID = 1, ID = 5 } );
products.Add( new Product { Name = "Beetroot juice", Price = 300, CategoryID = 1, ID = 6 } );
products.Add( new Product { Name = "Carrot juice", Price = 190, CategoryID = 1, ID = 7 } );
products.Add( new Product { Name = "Ginger ale", Price = 990, CategoryID = 1, ID = 8 } );
products.Add( new Product { Name = "Oregano", Price = 500, CategoryID = 2, ID = 9 } );
products.Add( new Product { Name = "Salt", Price = 550, CategoryID = 2, ID = 10 } );
products.Add( new Product { Name = "Pepper", Price = 490, CategoryID = 2, ID = 11 } );
products.Add( new Product { Name = "Carrots", Price = 300, CategoryID = 3, ID = 12 } );
products.Add( new Product { Name = "Spinach", Price = 250, CategoryID = 3, ID = 13 } );
products.Add( new Product { Name = "Onion", Price = 200, CategoryID = 3, ID = 14 } );
products.Add( new Product { Name = "Garlic", Price = 150, CategoryID = 3, ID = 15 } );
products.Add( new Product { Name = "Tomatoes", Price = 100, CategoryID = 3, ID = 16 } );
return products;
}
公共静态IEnumerable GetProducts()
{
列表产品=新列表();
添加(新产品{Name=“Milk”,价格=90,类别ID=4,ID=1});
添加(新产品{Name=“Cheese”,价格=130,类别ID=4,ID=2});
添加(新产品{Name=“Butter”,价格=110,类别ID=4,ID=3});
添加(新产品{Name=“苹果汁”,价格=230,类别ID=1,ID=4});
添加(新产品{Name=“葡萄汁”,价格=240,类别ID=1,ID=5});
添加(新产品{Name=“甜菜根汁”,价格=300,类别ID=1,ID=6});
添加(新产品{Name=“胡萝卜汁”,价格=190,类别ID=1,ID=7});
添加(新产品{Name=“Ginger ale”,价格=990,类别ID=1,ID=8});
添加(新产品{Name=“Oregano”,价格=500,类别ID=2,ID=9});
添加(新产品{Name=“Salt”,价格=550,类别ID=2,ID=10});
添加(新产品{Name=“Pepper”,价格=490,类别ID=2,ID=11});
添加(新产品{Name=“Carrots”,价格=300,类别ID=3,ID=12});
添加(新产品{Name=“Spinach”,价格=250,类别ID=3,ID=13});
添加(新产品{Name=“洋葱”,价格=200,类别ID=3,ID=14});
添加(新产品{Name=“大蒜”,价格=150,类别ID=3,ID=15});
添加(新产品{Name=“西红柿”,价格=100,类别ID=3,ID=16});
退货产品;
}
或
或
这将返回
Milk
string namesOfProductWithLowestPrice = products
.GroupBy(p => p.Price)
.OrderBy(g => g.Key)
.Select(g => string.Join(",", g.Select(p => p.Name)))
.FirstOrDefault();
如果多个产品的价格最低,它将用逗号连接名称。这将返回
牛奶
string namesOfProductWithLowestPrice = products
.GroupBy(p => p.Price)
.OrderBy(g => g.Key)
.Select(g => string.Join(",", g.Select(p => p.Name)))
.FirstOrDefault();
from p in Products where p.Price == Products.Min(x=>x.Price) select p.Name
如果有多个产品的价格最低,它将用逗号连接名称
from p in Products where p.Price == Products.Min(x=>x.Price) select p.Name
从有序的
列表中选择第一个
的问题在于,它不能处理多个项目具有相同最低价格的可能性
从有序的列表中选择第一个的问题在于,它不能处理多个项目具有相同最低价格的可能性。编辑在Tim Schmelters评论Ralph Shillington答案后,我更改了答案,该答案与我的答案非常相似,但语法不同
int lowestPrice = from prod in GetProducts()
select prod.Price).Min();
var lowestPriceProduct = from p in GetProducts()
where lowestPrice == p.Price)
select p;
编辑在Tim Schmelters对Ralph Shillingtons的答案发表评论后,我更改了答案,该答案与我的答案非常相似,但语法不同
int lowestPrice = from prod in GetProducts()
select prod.Price).Min();
var lowestPriceProduct = from p in GetProducts()
where lowestPrice == p.Price)
select p;
谢谢你,我不得不使用GetProducts而不是products,我想我已经尝试了所有的东西,然后就是这个。你知道我为什么不能打字吗?我一直在尝试,但主要无法使用它。如果多个产品的价格最低,将返回任意名称。谢谢你,我不得不使用GetProducts而不是products,我猜我也一直在尝试所有东西,然后就是这个。你知道我为什么不能打字吗?一直在尝试,但无法在主目录中使用。如果多个产品的价格最低,将返回任意名称。这将计算每个产品的最低价格。请注意,Linq To Objects
不是一个可以像这样优化“子查询”的数据库提供程序。如果将Products.Min(x=>x.Price)
放在带有断点的方法中,您可以很容易地看到它。您应该预先计算最低价格并使用该变量。这将计算每个产品的最低价格。请注意,Linq To Objects
不是一个可以像这样优化“子查询”的数据库提供程序。如果将Products.Min(x=>x.Price)
放在带有断点的方法中,您可以很容易地看到它。您应该预先计算最低价格并使用该变量。