【发布时间】:2011-09-15 11:18:51
【问题描述】:
我有这个 MS-SQL 语句:
SELECT cv.id FROM ContactValue cv
INNER JOIN (
SELECT mainId, max(version) as v
FROM ContactValue
WHERE version <= $Version(int)
GROUP BY mainId
)
AS t ON t.mainId = cv.mainId AND t.v = cv.version
WHERE cv.contact_id = $ContactID(int)
AND cv.isActive = 1
ORDER BY sort'
并希望在 linq 中实现。 我确实将上述查询分为多个查询,但性能并不快。 是否存在任何 linq to linq 加入
我的 C# 代码:
var groupMax = from cv in db.ContactValue
where cv.contact_id == ContactID && cv.version <= Version
orderby cv.sort
group cv by cv.mainId into gcv
select new { mainID = gcv.Key, version = gcv.Max(cv => cv.version) };
foreach (var data in groupMax.ToList())
{
var Query = from cv in db.ContactValue
where cv.contact_id == ContactID && cv.mainId == data.mainID && cv.version == data.version && cv.isActive == true
select cv;
if (Query.Count() > 0)
{
ContactValue tmp = Query.First();
}
}
我希望所有联系人都有 1-2 个查询而不是 1 个查询,然后为每个联系人另一个查询...
请帮帮我!
【问题讨论】:
标签: c# linq select group-by inner-join