gpt4 book ai didi

c# - EntityFramework - 在 LINQ 查询中按无序对分组

转载 作者:行者123 更新时间:2023-11-30 16:40:54 26 4
gpt4 key购买 nike

我有一个包含 4 列的表 **(User_from, User_to,Message,Date)**

我需要获取用户在所有参与者聊天中的最后一条消息。

var all = from m in db.Peers
where m.User_Id_To == id || m.User_Id_From == id
group m by new { m.User_Id_To, m.User_Id_From } into g
select g.OrderByDescending(x => x.Date).FirstOrDefault();

上面的代码用于获取每个 id 的最后一条消息,但仍有问题。

考虑下面这 2 条记录:

 User_from     User_To    Content   Date

1 2 hi 01-01-2018
2 1 wlc 02-02-2018

当我尝试使用我的查询时,我得到了两条记录。根据日期,我只需要最后一个。

最佳答案

GroupBy 中,您可以创建一个条件键,这样当您想要按顺序无关紧要的一对值进行分组时,您可以将键构造为匿名类型,并将第一个属性设置为 min值和第二个最大值。

var all = from m in db.Peers
where m.User_Id_To == id || m.User_Id_From == id
group m by new
{
Min = m.User_Id_To < m.User_Id_From ? m.User_Id_To : m.User_Id_From,
Max = m.User_Id_To > m.User_Id_From ? m.User_Id_To : m.User_Id_From
}
into g
select g.OrderByDescending(x => x.Date).FirstOrDefault();

关于c# - EntityFramework - 在 LINQ 查询中按无序对分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50198679/

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