C# 这些linq查询样式的真正含义
这些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
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()的调用。为什么为负(---):(不,它确实是双向的。但我只是想知道在性能或其他方面是否真的有什么不同.)。。