C# 使用IN子句将SQL转换为LINQ
背景: 我的数据库中只有一个表,用于记录对各种web服务的调用 每个日志条目都由一个GUID CorrelationID链接,该GUID CorrelationID链接特定web请求的所有日志条目 当在日志中搜索某一特定数据段(例如人名)时,我可能会得到一个包含该信息段的日志条目,但我希望显示与该请求相关的所有日志条目 目前: 为了在SQL中获得所需的结果,我使用以下查询: 从日志记录中选择*WHERE CorrelationId在日志记录中选择不同的CorrelationId,如“%fred%”按日期时间排序 问题: 我想将此查询转换为LINQ to实体 目前我所拥有的只是主要选择C# 使用IN子句将SQL转换为LINQ,c#,sql,entity-framework,linq,C#,Sql,Entity Framework,Linq,背景: 我的数据库中只有一个表,用于记录对各种web服务的调用 每个日志条目都由一个GUID CorrelationID链接,该GUID CorrelationID链接特定web请求的所有日志条目 当在日志中搜索某一特定数据段(例如人名)时,我可能会得到一个包含该信息段的日志条目,但我希望显示与该请求相关的所有日志条目 目前: 为了在SQL中获得所需的结果,我使用以下查询: 从日志记录中选择*WHERE CorrelationId在日志记录中选择不同的CorrelationId,如“%fred%
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的答案回答了类似的问题,但仍然无法使其适用于我的特定场景。这样做:
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();
可能重复您尝试过两次不同的查询吗?@Halhex是的,我尝试过,根据第一次查询的结果完成第二次查询的速度非常慢。您使用记录两次records=records。实体数据库类似于dbEntity。TableName@Bandito您能显示您尝试的代码吗?