C# Linq独立SQL语句集
我尝试将Distinct()与一些可查询的代码一起使用,如下所示: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
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();