这些linq查询样式的真正含义

时间:2013-10-04 15:03:28

标签: c# linq

这些linq查询可以用这两种方式编写。但选择哪种方式似乎真的是令人困惑的任务。请解释这些命令的性能差异(如果有)。

 from table1Details in objDataContext.Table1s where table1Details.SomeId == 15
                                           select new {....};

from table1Details in objDataContect.GetTable<Table1>() where table1Details.SomeId==15
                                     select new {...};

3 个答案:

答案 0 :(得分:3)

这根本不是与LINQ有关的差异。数据上下文提供了一个属性Table1s,在内部,它将调用GetTable<Table1>()。这是一种方便的方法,几乎​​没有性能成本,绝对没有功能差异。

答案 1 :(得分:1)

DataContext.GetTable Method

  

此方法是查询的主要入口点。强烈的时候   创建了类型化的DataContext,新生成的属性封装   调用此方法。例如,Customers属性是   生成后返回GetTable<Customer>

因此,对于您的情况,没有区别。您的DataContext有一个属性Table1,当您使用objDataContext.Table1s直接访问该属性时,它会调用objDataContext.GetTable<Table1>()

答案 2 :(得分:0)

  

但选择哪种方式似乎真的让人感到困惑。

为什么呢?令人困惑的是什么?两种方式都不行吗?您是否阅读了manual

  

此方法是查询的主要入口点。创建强类型DataContext时,新生成的属性会封装对此方法的调用。例如,生成Customers属性,返回GetTable<Customer>

GetTable<T>()只提供访问数据集的通用方法,运行时查找(GetTable<UnknownEntityType>()将抛出),而不是生成的编译时检查属性。