C# 需要更漂亮的LINQ到SQL查询的帮助吗
以下是AdventureWorks数据库的T_SQL查询: 选择名称 从生产。产品 其中ListPrice>=任何 选择最大标价 从生产。产品 按ProductSubcategory ID分组 我尝试为此编写LINQ查询:C# 需要更漂亮的LINQ到SQL查询的帮助吗,c#,.net,linq-to-sql,C#,.net,Linq To Sql,以下是AdventureWorks数据库的T_SQL查询: 选择名称 从生产。产品 其中ListPrice>=任何 选择最大标价 从生产。产品 按ProductSubcategory ID分组 我尝试为此编写LINQ查询: var groupMaxPricesquery2 = from product in dc.Products group product by product.ProductSubcateg
var groupMaxPricesquery2 = from product in dc.Products
group product by product.ProductSubcategoryID into productGroup
select productGroup.Max(eachProductInGroup => eachProductInGroup.ListPrice);
var query = from product in dc.Products
where groupMaxPricesquery2.Any(listPrice => listPrice <= product.ListPrice)
select product.Name;
如何使其更美观,即将这些查询组合在一起,或采用更有效的方法
非常感谢也许我在分组方面遗漏了一些东西,但我不明白为什么有必要这样做
var maxListPrice = dc.Products.Max(p => p.ListPrice);
var query = dc.Products.Where(p => p.ListPrice >= maxListPrice).Select(n => n.Name);
也许我在分组方面遗漏了一些东西,但我不明白为什么有必要这样做
var maxListPrice = dc.Products.Max(p => p.ListPrice);
var query = dc.Products.Where(p => p.ListPrice >= maxListPrice).Select(n => n.Name);
请尝试以下两种方法之一:
var query = from product in dc.Products
let groupMaxPricesQuery = dc.Products.GroupBy(p => p.ProductSubcategoryID)
.Select(g => g.Max(item => item.ListPrice))
where groupMaxPricesQuery.Any(listPrice => listPrice <= product.ListPrice)
select product.Name;
// or
var query = dc.Products
.Select(product => new {
Product = product,
GroupedMaxPrices = dc.Products.GroupBy(p => p.ProductSubcategoryID)
.Select(g => g.Max(item => item.ListPrice))
})
.Where(item => item.GroupedMaxPrices.Any(listPrice => listPrice <= item.Product.ListPrice))
.Select(item => item.Product.Name);
请尝试以下两种方法之一:
var query = from product in dc.Products
let groupMaxPricesQuery = dc.Products.GroupBy(p => p.ProductSubcategoryID)
.Select(g => g.Max(item => item.ListPrice))
where groupMaxPricesQuery.Any(listPrice => listPrice <= product.ListPrice)
select product.Name;
// or
var query = dc.Products
.Select(product => new {
Product = product,
GroupedMaxPrices = dc.Products.GroupBy(p => p.ProductSubcategoryID)
.Select(g => g.Max(item => item.ListPrice))
})
.Where(item => item.GroupedMaxPrices.Any(listPrice => listPrice <= item.Product.ListPrice))
.Select(item => item.Product.Name);
是的,我很明白你的意思。这里不需要分组。我之所以使用它,是因为我想让我的LINQ查询看起来像T_SQL查询。在T-SQL查询中也不需要它——这只是浪费。你要求一个更漂亮、更有效的方法;我想我两者都提供了。是的,你说得对。你的回答超出了我的预料。我的问题是我只关注查询语法,而不是它的含义。非常感谢你的帮助。是的,我很理解你的意思。这里不需要分组。我之所以使用它,是因为我想让我的LINQ查询看起来像T_SQL查询。在T-SQL查询中也不需要它——这只是浪费。你要求一个更漂亮、更有效的方法;我想我两者都提供了。是的,你说得对。你的回答超出了我的预料。我的问题是我只关注查询语法,而不是它的含义。非常感谢你的帮助,谢谢艾哈迈德。我从你的回答中学到了很多。在第一个查询中,我需要的是let子句。第二个查询使用标准的点表示法语法。在本例中,我发现第一个查询更具可读性。谢谢Ahmad。我从你的回答中学到了很多。在第一个查询中,我需要的是let子句。第二个查询使用标准的点表示法语法。在本例中,我发现第一个查询更具可读性。