Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# Linq独立SQL语句集_C#_Linq_Linq To Entities_Distinct_Expression Trees - Fatal编程技术网

C# Linq独立SQL语句集

C# Linq独立SQL语句集,c#,linq,linq-to-entities,distinct,expression-trees,C#,Linq,Linq To Entities,Distinct,Expression Trees,我尝试将Distinct()与一些可查询的代码一起使用,如下所示: var finalWhere = Expression.Lambda<Func<Data.DataModel.TrialSummary, bool>>(containsMethod, parameter); queryableTrialSummary = queryableTrialSummary.Where(finalWhere).Distinct(); var trials = queryable

我尝试将Distinct()与一些可查询的代码一起使用,如下所示:

var finalWhere = Expression.Lambda<Func<Data.DataModel.TrialSummary, bool>>(containsMethod, parameter);

queryableTrialSummary = queryableTrialSummary.Where(finalWhere).Distinct();

var trials = queryableTrialSummary.Select(x => x.Trial_Code).Distinct();
我的问题是:为什么在上面的SQL语句中有两个select语句,一个是内部的,一个是外部的

我是否做错了什么,因为我认为这应该在这里产生错误,因为我认为这应该产生如下的SQL语句

SELECT DISTINCT 
        [Extent1].[Trial_Code] AS [Trial_Code]
        FROM [OBAR].[TrialSummary] AS [Extent1]
        WHERE [Extent1].[Trial_MasterProtocolId] IN (N'15NOPEPYT512')
你能帮忙吗

我的问题是:为什么有两个select语句,一个是INTERNAL语句,另一个是select语句 在上面的SQL语句中

您使用了两个
distinct
命令,因此生成的sql也将包含两个
distinct
。将linq更改为:

var trials = queryableTrialSummary.Where(finalWhere).Select(x => x.Trial_Code).Distinct();
您可以使用检查生成的SQL

问题: 为什么有两个select语句,一个是内部语句,一个是外部语句 上面的SQL语句

因为您要通过执行两次Distinct将两个表达式添加到表达式树中:

queryableTrialSummary.Where(finalWhere).Distinct();
queryableTrialSummary.Select(x => x.Trial_Code).Distinct();
试着理解IQueryable和IEnumerable是如何工作的。

您需要的是:

queryableTrialSummary.Where(finalWhere);
queryableTrialSummary.Select(x => x.Trial_Code).Distinct();

@用户3494319我是否回答了你的问题?
queryableTrialSummary.Where(finalWhere);
queryableTrialSummary.Select(x => x.Trial_Code).Distinct();