【问题标题】:Need Linq translation for the following SQL Query以下 SQL 查询需要 Linq 翻译
【发布时间】:2009-10-22 13:08:05
【问题描述】:
select colId,
colTaskType,
MaxID
from tblTaskType
join (
select tblCheckList.colTaskTypeID,
max(colItemNumber) MaxID
from tblCheckList
group by colTaskTypeID
) x on coltaskTypeID = tblTaskType.colID
【问题讨论】:
标签:
sql
linq
group-by
subquery
max
【解决方案1】:
假设您使用的是 linq-to-sql 并且在数据上下文中有两个表。
或多或少准确的翻译是:
var maxChecks = from checks in DataContext.tblChecklist
group checks by checks.colTaskTypeID into g
select new { colTaskTypeID, max = g.Group.Max(x => x.colItemNumber) };
var result = from t in DataContext.tblTaskType
join c in maxChecks on t.colTaskTypeID equals c.colTaskTypeID
select new { t.colId, t.colTaskTypeID, c.max };
但你可以试试:
var result = from t in DataContext.tblTaskType
select new {
t.colId,
t.colTaskTypeID,
Max = (from c in DataContext.tblChecklist
where c.colTaskTypeID == t.colTaskTypeID
select c.colItemNumber).Max() };