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

本文关键字:linq 查询 样式 这些 | 更新日期: 2023-09-27 18:33:51

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

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

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

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

DataContext.GetTable Method

此方法是查询的主要入口点。当强烈 创建类型化数据上下文,封装新生成的属性 调用此方法。例如,Customers属性是 生成,返回GetTable<Customer> .

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

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

为什么?它有什么令人困惑的?这两种方式都行不通吗?你读过手册吗?

此方法是查询的主要入口点。创建强类型数据上下文时,新生成的属性将封装对此方法的调用。例如,生成一个返回 GetTable<Customer>Customers 属性

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