-3

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

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

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

3 回答 3

3

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

于 2013-10-04T15:05:58.370 回答
1

DataContext.GetTable 方法

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

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

于 2013-10-04T15:07:52.937 回答
0

但是选择哪种方式似乎确实是一项令人困惑的任务。

为什么?它有什么令人困惑的地方?两种方式都不行吗?你读过说明书吗?

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

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

于 2013-10-04T15:11:11.787 回答