【发布时间】:2016-01-13 19:36:07
【问题描述】:
我有以下 SQL 语句:
select
p.productId,
p.minAge,
p.maxAge,
min(pcb.lowerbound) MinValue,
max(pcb.upperBound) MaxValue,
p.name ProductName
from gliweb..product p
inner join gliweb..ProductClassBand pcb on pcb.productId = p.productId
where p.IncludeInQuote = 1
and @currentAge between p.minAge and p.maxAge
group by p.productId, p.minAge, p.maxAge, p.name
order by p.name
如您所见,这是一个简单的语句,包含一个 GROUP,然后是一个 MIN/MAX。我正在尝试将此查询转换为 C# LINQ,但我遇到了困难。
到目前为止,我有以下几点:
var productListDatabase = from products in DataContext.Products
join band in DataContext.ProductClassBands on products.productId equals band.productId
where products.minAge <= currentAge &&
products.maxAge >= currentAge &&
products.IncludeInQuote == true
orderby products.name
group products by new{
products.productId,
products.minAge ,
products.maxAge,
products.name
} into g
select new
{
g.Key.maxAge,
g.Key.minAge,
g.Key.productId,
g.Key.name
//,minFace = (from t2 in band select t2.
};
除了 MIN/MAX 面列之外,它可以满足我的所有需求。我不确定如何执行此操作,因为我正在 joining 一个表,但需要聚合另一个表中的数据。
谁能帮我完成这个查询作为一个 Linq 语句?
【问题讨论】:
标签: c# linq linq-to-sql