如何使用 LINQ 获取用户之间的最新消息?

2024-01-11

我有一个表显示消息之间的关系。像这样:

我想获取每个用户的最后一条消息。因此,例如,结果将是表中的 id 91 和 id 92

var messages = await _dbContext.Messages.Include(x =>x.User).Where(x =>x.SenderId == userId | x.ReceiveId == userId).OrderByDescending(x =>x.CreatedAt).Select(x =>new Message {
  Id = x.Id,
  Content = x.Content,
  CreatedAt = x.CreatedAt,
  User = new User {
    Id = x.User.Id,
    UserName = x.User.UserName,
    Name = x.User.Name,
    LastName = x.User.LastName,
    Profil = x.User.Profil
  },
}).Distinct().ToListAsync();

我该怎么办?


答案是:Window Functions,EF不支持。所以只需编写 SQL 并通过 Dapper 运行它

SELECT
   s.Id,
   s.SenderId,
   s.ReceiveId,
   s.Content,
   s.CreatedAt
FROM 
(
   SELECT
      m.Id,
      m.SenderId,
      m.ReceiveId,
      m.Content,
      m.CreatedAt,
      ROW_NUMBER() OVER (PARTITION BY m.ReceiveId ORDER BY m.CreatedAt DESC) AS RN
   FROM Messages m
) s
WHERE s.RN = 1

其他解决方案只是解决方法。这是我第三次求婚linq2db.EntityFrameworkCore https://github.com/linq2db/linq2db.EntityFrameworkCore如果您需要 LINQ 来完成此类任务

var query = from m in Messages
   select new 
   {
      m.Id,
      m.SenderId,
      m.ReceiveId,
      m.Content,
      m.CreatedAt,
      RN = Sql.Ext.RowNumber().Over().PartitionBy(m.ReceiveId).OrderByDesc(m.CreatedAt).ToValue()
   }

var messageQuery = 
  from m in query
  where m.RN == 1
  select new
  {
     m.Id,
     m.SenderId,
     m.ReceiverId,
     m.Content,
     m.CreatedAt,      
  }

// switch to alternative LINQ Translator
messageQuery = messageQuery.ToLinqToDB();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 LINQ 获取用户之间的最新消息? 的相关文章

  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 按成员序列化

    我已经实现了template
  • 在结构中使用 typedef 枚举并避免类型混合警告

    我正在使用 C99 我的编译器是 IAR Embedded workbench 但我认为这个问题对于其他一些编译器也有效 我有一个 typedef 枚举 其中包含一些项目 并且我向该新类型的结构添加了一个元素 typedef enum fo
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 如何序列化/反序列化自定义数据集

    我有一个 winforms 应用程序 它使用强类型的自定义数据集来保存数据进行处理 它由数据库中的数据填充 我有一个用户控件 它接受任何自定义数据集并在数据网格中显示内容 这用于测试和调试 为了使控件可重用 我将自定义数据集视为普通的 Sy
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • C# 成员变量继承

    我对 C 有点陌生 但我在编程方面有相当广泛的背景 我想做的事情 为游戏定义不同的 MapTiles 我已经像这样定义了 MapTile 基类 public class MapTile public Texture2D texture pu
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况

随机推荐

  • 如何用简单的 HTML DOM 来模拟子选择器?

    Fellas 我有一个令人讨厌的页面需要解析 但无法弄清楚如何使用它从中提取正确的数据块简单的 HTML DOM http simplehtmldom sourceforge net 因为它没有 CSS 子选择器支持 HTML ul cla
  • Android 模拟器 SD 卡映像已在使用中

    我已经关注了以下答案this https stackoverflow com questions 9913247 android virtual device问题没有成功 我无法回复发布的答案 缺乏声誉 所以我不得不提出一个新问题 全部清除
  • 自定义 SONOS 根浏览容器

    Sonos Labs 目前提供的文档 自定义根浏览容器 http musicpartners sonos com node 478 指出它可以使用 EDITORIAL GRID 或 LIST DisplayMode 有没有关于如何实现 Ap
  • 类验证器 - 验证对象数组

    我正在使用带有 NestJS 的类验证器包 并且我希望验证需要恰好有 2 个具有相同布局的对象的对象数组 到目前为止我有 import IsString IsNumber from class validator export class
  • Google 地图 API - 获取街道坐标

    Google Maps API 有没有办法获取某个位置的街道坐标 我想获取最近的街道坐标 例如 为了得到这个 我需要组成街道的所有坐标 有这样的事吗 您可以使用directionService 传递给定地址 或位置 作为来源and目的地到d
  • 使用CATransform3D创建翻转动画

    我正在尝试重新创建 UIViewAnimationTransitionFlipFromRight 和左 我这样做的原因如下所示 是在动画中间当图层被遮挡时对 AVCaptureVideoPreviewLayer 进行更改 UIViewAni
  • xcode 10.3 损坏的 xib

    将 xcode 更新到 10 3 版本后无法查看或操作所有 xib 文件 有什么解决办法吗 我的操作系统版本 10 14 4 18E226 删除派生数据 不起作用 从首选项中完全删除派生数据 然后重新启动计算机
  • jquery中如何获取textarea的值?

    如果我使用的是jquery 如何获取Textarea值
  • 让 Swift 相信函数由于抛出异常而永远不会返回

    因为 Swift 没有抽象方法 所以我创建了一个方法 其默认实现无条件地引发错误 这会强制任何子类重写抽象方法 我的代码如下所示 class SuperClass func shouldBeOverridden gt ReturnType
  • 触发子元素的 onclick 事件,但不触发父元素的 onclick 事件

    我有一些嵌套元素 每个元素都有一个 onclick 事件 在大多数情况下 我希望当用户单击子事件时触发这两个事件 父事件和子事件都会被触发 默认行为 但是 至少在一种情况下 我想触发孩子的 onclick 事件 来自 javascript
  • 推荐的 Android 音乐格式 - mp3、ogg 还是其他? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我被问到我的项目需要哪种格式的音乐 通过查看文档 Android 平台似乎提供了一个不错的选择 音频当然不是我的强项 所以我想知道是否有一种最适
  • 为什么 du 或 echo 流水线不起作用?

    我正在尝试对当前目录中的每个目录使用 du 命令 所以我尝试使用这样的代码 ls du sb 但它没有按预期工作 它仅输出当前 的大小目录仅此而已 echo 也是同样的情况 ls echo 输出空行 为什么会发生这种情况 使用管道发送输出
  • 如何在 Java 中创建 PKI

    我想创建存储在数据库中的证书 但我不知道如何做到这一点 如果退出 API 或库可以帮助我做到这一点 谢谢 公钥基础设施不仅仅是签名公钥的数据库 例如 PKI 最重要的部分之一是使用 OCSP 协议撤销证书的能力 简而言之 用 java 构建
  • 将曲线拟合到数据集

    我有一个包含两个数据集的图 它产生轻微的梯度 其中最佳拟合曲线可能会被过度绘制 目前我只能得到一条最适合的直线 我明白scipy optimize curve fit应该能够帮助我 但这需要我知道我想要过度绘制的函数 我认为 下面是我的代码
  • 如何以编程方式隐藏/禁用 Android 软键盘上的表情符号

    是否可以隐藏特定的键盘按钮 我有一个EditText在某些设备上 其键盘上有笑脸 而在其他设备上则没有 我想在所有设备上隐藏它 下面是我的 XMLEditText android id id text editor android layo
  • 我应该如何在我的 ApplicationController 中使用 Draper?

    我的问题涉及以下开发堆栈 轨道3 2 1 德雷珀 0 14 血统1 2 5 我想做的是将导航传递到我的布局 所以我在我的过滤器中定义了一个之前的过滤器ApplicationController class ApplicationContro
  • MySQL 8 创建新用户,密码不起作用

    我使用 MySQL 已经好几年了 创建新用户直到 MySQL 5 x 版本的命令如下 GRANT ALL PRIVILEGES ON TO username localhost IDENTIFIED BY password 最近我安装了 M
  • 如何设置 Spring Boot 来运行 HTTPS / HTTP 端口

    Spring Boot 有一些属性来配置 Web 端口和 SSL 设置 但是一旦设置了 SSL 证书 http 端口就会变成 https 端口 那么 如何让两个端口同时运行 例如 80 和 443 正如您所看到的 只有一个端口的属性 在本例
  • 将视图添加到constraintLayout,其约束类似于另一个子项

    I have a constraint layout alpha9 with views spread all over it and I have one particular ImageView that I need to repli
  • 如何使用 LINQ 获取用户之间的最新消息?

    我有一个表显示消息之间的关系 像这样 我想获取每个用户的最后一条消息 因此 例如 结果将是表中的 id 91 和 id 92 var messages await dbContext Messages Include x gt x User