首页 > 解决方案 > linq 是返回整个数据源还是只返回指定的选择列?

问题描述

给定这样的查询:

var myThingy =>
         (from rg in _repository.GetQueryable<TheThing>()
          where rg.Id == someId
          select rg);

var myThingysId =>
         (from rg in _repository.GetQueryable<TheThing>()
          where rg.Id == someId
          select rg.Id);

在第一个中,我要求完整的 TheThingy,而在第二个中,只有它的 ID。

我想知道的是它们都会产生相同的 SQL 查询吗?

标签: c#.netlinq-to-sql

解决方案


Linq 在第一种情况下返回整个数据源(所有列) -

林克代码:

from t in Persons select t

生成的 SQL:

 SELECT [t0].[PersonID], [t0].[FirstName], [t0].[LastName] FROM [Person] AS [t0]

并在第二种情况下仅返回指定的列 -

林克代码:

from t in Persons select new {t.PersonID}

生成的 SQL:

SELECT [t0].[PersonID] FROM [Person] AS [t0]

推荐阅读