linq 对列表进行分组并从中获取多个数据

1mrurvl1  于 2022-12-06  发布在  其他
关注(0)|答案(2)|浏览(145)

我有一个时间表列表。我想拉两个数据分组在这个列表上。但是,我没有成功。我的数据。
| 标识符|xid公司|日期|犹太人|吉德|
| - -|- -|- -|- -|- -|
| 一个|三十|2022年8月19日|五个|三个|
| 2个|三十一个|2022年8月18日|六个|五个|
| 三个|三十|2022年8月17日|六个|三个|
| 四个|三十二|2022年8月18日|六个|五个|
我的代码

_contex.timetable.where(i=>i.yid==6).DistinctBy(i => i.xid).Select(i => new { i.xid, i.gid, i.date}).ToListAsync();

但空值或错误。我想做的。
| xid公司|日期|犹太人|吉德|
| - -|- -|- -|- -|
| 三十|2022年8月19日|五个|三个|
| 三十一个|2022年8月18日|六个|五个|
| 三十二|2022年8月18日|六个|五个|
我想得到日期的最后一个数据和gid字段。
抱歉我的英语不好,我希望我解释过了。

yeotifhr

yeotifhr1#

您可以按xid对它们进行分组,并从每组中选取最新的日期行。

var result = context.timetable
                .GroupBy(t => t.xid)
                .Select(g => g.OrderByDescending(r => r.date).First())
                .ToListAsync();
qxsslcnc

qxsslcnc2#

从你的问题中,我认为你想从最新日期行中获得Iddategid的数据,这些数据是按xid分组的,所以你可以尝试引用以下代码:

var result = await _context.timetables.GroupBy(x => x.xid)
              .Select(y => y.OrderByDescending(r => r.date)
               .Select(a=> new {a.Id,a.date,a.gid}).FirstOrDefault())
                .ToListAsync();

相关问题