Linq Distinct SQL Statementet
Linq Distinct SQL Statementet
我尝试将 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 Statement Generated for the distinct is as below;
SELECT
[Distinct1].[Trial_Code] AS [Trial_Code]
FROM ( SELECT DISTINCT
[Extent1].[Trial_Code] AS [Trial_Code]
FROM [OBAR].[TrialSummary] AS [Extent1]
WHERE [Extent1].[Trial_MasterProtocolId] IN (N'15NOPEPYT512')
) AS [Distinct1]
我的问题是:为什么上面的SQL语句中有两个select语句,一个内部和一个外部。
我是不是做错了什么,因为我认为这应该会在这里产生一些错误,因为我认为这应该会产生 SQL 如下语句
SELECT DISTINCT
[Extent1].[Trial_Code] AS [Trial_Code]
FROM [OBAR].[TrialSummary] AS [Extent1]
WHERE [Extent1].[Trial_MasterProtocolId] IN (N'15NOPEPYT512')
你能帮忙吗
My Question is: why there are two select statements, one inner and one
outer in the above SQL statement.
您使用了两个 distinct
命令,因此生成的 sql 也将包含两个 distinct
。将您的 linq 更改为:
var trials = queryableTrialSummary.Where(finalWhere).Select(x => x.Trial_Code).Distinct();
您可以使用 linqPad 检查您生成的 SQL。
Question:
why there are two select statements, one inner and one outer in the
above SQL statement.
因为您通过执行两次 Distinct 将两个表达式添加到表达式树中:
queryableTrialSummary.Where(finalWhere).Distinct();
queryableTrialSummary.Select(x => x.Trial_Code).Distinct();
尝试了解 IQueryable 和 IEnumerable 的工作原理。
This is a nice blog to read.
您要找的是:
queryableTrialSummary.Where(finalWhere);
queryableTrialSummary.Select(x => x.Trial_Code).Distinct();
我尝试将 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 Statement Generated for the distinct is as below;
SELECT
[Distinct1].[Trial_Code] AS [Trial_Code]
FROM ( SELECT DISTINCT
[Extent1].[Trial_Code] AS [Trial_Code]
FROM [OBAR].[TrialSummary] AS [Extent1]
WHERE [Extent1].[Trial_MasterProtocolId] IN (N'15NOPEPYT512')
) AS [Distinct1]
我的问题是:为什么上面的SQL语句中有两个select语句,一个内部和一个外部。
我是不是做错了什么,因为我认为这应该会在这里产生一些错误,因为我认为这应该会产生 SQL 如下语句
SELECT DISTINCT
[Extent1].[Trial_Code] AS [Trial_Code]
FROM [OBAR].[TrialSummary] AS [Extent1]
WHERE [Extent1].[Trial_MasterProtocolId] IN (N'15NOPEPYT512')
你能帮忙吗
My Question is: why there are two select statements, one inner and one outer in the above SQL statement.
您使用了两个 distinct
命令,因此生成的 sql 也将包含两个 distinct
。将您的 linq 更改为:
var trials = queryableTrialSummary.Where(finalWhere).Select(x => x.Trial_Code).Distinct();
您可以使用 linqPad 检查您生成的 SQL。
Question: why there are two select statements, one inner and one outer in the above SQL statement.
因为您通过执行两次 Distinct 将两个表达式添加到表达式树中:
queryableTrialSummary.Where(finalWhere).Distinct();
queryableTrialSummary.Select(x => x.Trial_Code).Distinct();
尝试了解 IQueryable 和 IEnumerable 的工作原理。 This is a nice blog to read.
您要找的是:
queryableTrialSummary.Where(finalWhere);
queryableTrialSummary.Select(x => x.Trial_Code).Distinct();