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

C# 这些linq查询样式的真正含义,c#,linq,C#,Linq,这些linq查询可以用两种方式编写。但选择哪条路似乎真的是一项令人困惑的任务。请解释这些命令的性能差异(如果有) from table1Details in objDataContext.Table1s where table1Details.SomeId == 15 select new {....}; from table1Details in objDataContect.GetTable<Ta

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

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

from table1Details in objDataContect.GetTable<Table1>() where table1Details.SomeId==15
                                     select new {...};
来自objDataContext.Table1s中的table1Details,其中table1Details.SomeId==15
选择新的{…};
来自objDataContect.GetTable()中的table1Details,其中table1Details.SomeId==15
选择新{…};

这与LINQ没有任何区别。数据上下文提供了一个属性
Table1s
,该属性在内部将调用
GetTable()
。这是一种方便的方法,几乎没有性能成本,也绝对没有功能差异。

此方法是查询的主要入口点。当一个 类型化DataContext被创建,新生成的属性被封装 调用此方法。例如,
Customers
属性是 生成的,返回
GetTable

所以对你来说,没有区别。当您使用
objDataContext.Table1s
直接访问它时,您的
DataContext
有一个属性
Table1
,它调用
objDataContext.GetTable()

但选择哪条路似乎真的是一项令人困惑的任务

为什么??有什么让人困惑的?两种方法都有效吗?你看过报纸了吗

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


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

好吧,第二种方法(如编写的)不会做任何事情。实际上没有区别。查看
Table1s
属性的源代码,这应该可以解释很多。您可以使用查看SQL是什么produced@Nilesh他肯定不想要,也不应该添加对.ToList()的调用。为什么为负(---):(不,它确实是双向的。但我只是想知道在性能或其他方面是否真的有什么不同.)。。