Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 查找名为LINQ的最低价格退货的产品_C#_Linq - Fatal编程技术网

C# 查找名为LINQ的最低价格退货的产品

C# 查找名为LINQ的最低价格退货的产品,c#,linq,C#,Linq,我是LINQ的新手,我试图在列表中找到最低的价格并返回它的名称 我一直在搜索,没有找到任何我可以使用的东西 该列表属于类类别,但我必须在main中写出结果 这是微软Visual Studio中的一个C 我必须从中找到最低价格的列表如下: public static IEnumerable<Product> GetProducts( ) { List<Product> products = new List<Product>( );

我是LINQ的新手,我试图在列表中找到最低的价格并返回它的名称

我一直在搜索,没有找到任何我可以使用的东西

该列表属于类类别,但我必须在main中写出结果

这是微软Visual Studio中的一个C

我必须从中找到最低价格的列表如下:

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)
放在带有断点的方法中,您可以很容易地看到它。您应该预先计算最低价格并使用该变量。