Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用IN子句将SQL转换为LINQ_C#_Sql_Entity Framework_Linq - Fatal编程技术网

C# 使用IN子句将SQL转换为LINQ

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%

背景:

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

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

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

目前:

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

从日志记录中选择*WHERE CorrelationId在日志记录中选择不同的CorrelationId,如“%fred%”按日期时间排序 问题:

我想将此查询转换为LINQ to实体

目前我所拥有的只是主要选择

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您能显示您尝试的代码吗?