我有一个名为Quiz的表,其中包含这些字段
id As Int
created As DateTime
header As Sring
body As String
fk_parent As int
url As String
所有没有父键的项目都是问题,拥有父键的项目就是答案。我有问题要获得所有最新的活动问题(基于问题创建时间和答案创建时间)。
我正在努力编写可以完成上述任务的Linq查询。
答案 0 :(得分:0)
这是一个开始:
IQueryable<int> keys =
from x in dc.Quiz
let masterID = ParentId.HasValue ? ParentId.Value : Id
group x by masterID into g
order g by g.Max(x => x.created) descending
select g.Key
List<Quiz> = dc.Quiz.Where(x => keys.Take(20).Contains(x.Id)).ToList();
这假设答案不是答案的父母......如果他们可以 - 你手上有任意深度树,这对于Linq和SQL来说都是错误的形状。
答案 1 :(得分:0)
您可以尝试在LINQ中加入表格并创建一个包含问题和答案的新对象:
var QandA = from q in tbl
join a in tbl on q.id equals a.fk_parent
select new {
QHeader = q.header,
QBody = q.body,
QUrl = q.url,
AHeader = a.header,
ABody = a.body,
AUrl = a.url
};
我认为这就是你的表的设置方式,但我可能会错误地加入。