作为初级开发人员,你曾经打败过的一件事是,你永远不会在数据集上做"SELECT*",因为它有几个原因是不可靠的.
自从转移到Linq(首先是Linq到SQL然后是实体框架),我想知道Linq等价物是否同样不受欢迎?
例如
var MyResult = from t in DataContext.MyEntity
where t.Country == 7
select t;
Run Code Online (Sandbox Code Playgroud)
我们应该选择只有我们想要明确提到的字段的匿名类型,还是LinqToSql等人现在可以接受的所有选择,因为它们提供的数据周围有额外的东西?
问候
武
它并不令人沮丧,它取决于您的用例.如果要更新结果并保留它,那么您应该选择t
,但是如果您不想这样做而只是查询显示目的,可以通过选择所需的属性来提高效率:
var MyResult = from t in DataContext.MyEntity
where t.Country == 7
select new { t.Prop1, t.Prop2 };
Run Code Online (Sandbox Code Playgroud)
这有几个原因.匿名类型的数量略快,但更重要的是它会禁用更改跟踪 ...因为您无法保留匿名类型,因此无需跟踪对其的更改.
这是这个常见性能领域的一个很好的概述,这在开始时非常棒.它包括对我刚刚描述的变化跟踪的更深入的解释.