我对表使用linq2sql和 m_DateContext.Dates 类
ID | ParentID | Datestamp
---|----------|----------
1 | NULL | 1.8.2010
---|----------|----------
2 | 1 | 2.8.2010
---|----------|----------
3 | 1 | 4.8.2010
等...
我需要编写linq查询以仅选择ParentID为 NULL 的行(例如:ID = 1),但是DATESTAMP的值必须等于其子行的最大日期。 (行ID = 3)。
Linq查询必须返回m_DateContext.Dates的实例,其中包含指向数据库模式中实体的非断开链接。
结果必须像:
ID = 1 ParentID=NULL Datestamp = 4.8.2010
请帮忙
答案 0 :(得分:2)
var rows =
(
from parent in db.Dates
where parentId == null
let MaxDate = parent.Dates.Max(child => child.DateStamp)
select new{DateObject = parent, MaxDate = MaxDate}
)
List<Date> result = new List<Date>();
foreach(var row in rows)
{
Date d = row.DateObject;
d.DateStamp = row.MaxDate;
result.Add(d)
}
答案 1 :(得分:1)
所有类型的假设(linq to entity或sql)我认为你想要一个让...
var query = (
from i in TDates
where i.ParentID==null
let maxDate= TDates.Max(d=>d.Datestamp)
select new {
NonBrokenRecord = i,
Datestamp = maxDate
}
).ToList();
一旦你得到了结果,你就可以......
query.ForEach(x=>x.NonBrokenRecord.DateStamp = x.Datestamp);
query = query.Select(x=>x.NonBrokenRecord).ToList();
答案 2 :(得分:1)
var query =
from p in TDates
where p.ParentID==null
select new TDate
{
ID = p.ID,
ParentID = null,
Datestamp = TDates.Where(c=> c.ParentID == p.ID).Max(c=>c.Datestamp)
};