gpt4 book ai didi

C#加入群组查询

转载 作者:太空宇宙 更新时间:2023-11-03 12:18:11 27 4
gpt4 key购买 nike

我正在使用这个查询:

var result =
from i in dc.TFFiles
where i.Tid == tid
group i by new { i.Title, i.Type } into gr
join c in dc.FCategories on gr.FirstOrDefault().CatId equals c.Id
select new { id = gr.FirstOrDefault().id, Title = gr.FirstOrDefault().Title, Version = (from cv in gr select cv.Version).Max() };

但是如果有这些TFFiles:

   id   |   tid   |   Title    |   Type   |    Version
0 | 15 | File1 | Type1 | 0
1 | 15 | File2 | Type1 | 0
2 | 15 | File1 | Type1 | 1
3 | 15 | File1 | Type1 | 2

我会回来的:

   id   |   tid   |   Title    |   Type   |    Version
0 | 15 | File1 | Type1 | 2 (wrong version - id)
1 | 15 | File2 | Type1 | 0

代替:

   id   |   tid   |   Title    |   Type   |    Version
3 | 15 | File1 | Type1 | 2 (correct version - id)
1 | 15 | File2 | Type1 | 0

如何更改查询以获得正确的结果?

最佳答案

我在评论中的第一个建议是获取最大 ID,但这可能会返回错误的 ID。

第二个建议是使用以下内容:

id = gr.OrderByDescending(item => item.Version).FirstOrDefault().id

它将使用降序排序从具有最高版本的组中获取 id。

还有一件事:如果有相同的记录,只是 id 不同,那么返回的 id 可能不是最后一个。假设这不是问题。

关于C#加入群组查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48788155/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com