这些linq查询可以用这两种方式编写。但选择哪种方式似乎真的是令人困惑的任务。请解释这些命令的性能差异(如果有)。
from table1Details in objDataContext.Table1s where table1Details.SomeId == 15
select new {....};
from table1Details in objDataContect.GetTable<Table1>() where table1Details.SomeId==15
select new {...};
答案 0 :(得分:3)
这根本不是与LINQ有关的差异。数据上下文提供了一个属性Table1s
,在内部,它将调用GetTable<Table1>()
。这是一种方便的方法,几乎没有性能成本,绝对没有功能差异。
答案 1 :(得分:1)
此方法是查询的主要入口点。强烈的时候 创建了类型化的DataContext,新生成的属性封装 调用此方法。例如,
Customers
属性是 生成后返回GetTable<Customer>
。
因此,对于您的情况,没有区别。您的DataContext
有一个属性Table1
,当您使用objDataContext.Table1s
直接访问该属性时,它会调用objDataContext.GetTable<Table1>()
答案 2 :(得分:0)
但选择哪种方式似乎真的让人感到困惑。
为什么呢?令人困惑的是什么?两种方式都不行吗?您是否阅读了manual?
此方法是查询的主要入口点。创建强类型DataContext时,新生成的属性会封装对此方法的调用。例如,生成
Customers
属性,返回GetTable<Customer>
。
GetTable<T>()
只提供访问数据集的通用方法,运行时查找(GetTable<UnknownEntityType>()
将抛出),而不是生成的编译时检查属性。