为了账号安全,请及时绑定邮箱和手机立即绑定

SQL 到带有 IN 子句的 LINQ

SQL 到带有 IN 子句的 LINQ

C#
有只小跳蛙 2022-11-22 15:59:31

背景:

我的数据库中有一个表,用于记录对各种 Web 服务的调用。

每个日志条目都由一个 GUID (CorrelationID) 链接,该 GUID 链接特定 Web 请求的所有日志条目。

在日志中搜索特定数据(例如人名)时,我可能会得到一个包含该信息的日志条目,但我想显示与同一请求相关的所有日志条目。

目前:

为了在 SQL 中获得所需的结果,我使用了这个查询:

SELECT * FROM Logging WHERE CorrelationId IN (SELECT DISTINCT CorrelationId FROM Logging WHERE Message like '%fred%') ORDER BY Datetime

问题:

我想将此查询转换为 LINQ to Entities。

我现在只有主要选择

var records = db.Loggings.Where(x => x.Datetime >= fromDate && x.Datetime < toDate)
                .Where(x => x.Message.Contains("fred"))
                .OrderBy(x => x.Datetime).AsQueryable();

我无法计算出添加该IN部分的正确语法。

我已经关注了类似问题的其他 SO 答案,但仍然无法让它适用于我的特定场景。


查看完整描述

1 回答

?
慕容森

TA贡献1540条经验 获得超17个赞

做这样的工作:


var subQuery = records.Where(x => x.Datetime >= fromDate && x.Datetime < toDate && x.Message.Contains("fred")).Select(x => x.CorrelationID).Distinct();


var result = records.Where(x => subQuery.Contains(x.CorrelationID)).OrderBy(x => x.Datetime).AsQueryable();



查看完整回答
反对 回复 6天前
  • 1 回答
  • 0 关注
  • 5 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信