【发布时间】:2014-07-02 14:34:24
【问题描述】:
当程序员使用var 而不是精确并编写正确的类型时,我非常恼火。微软教程中:http://msdn.microsoft.com/en-us/library/bb397927.aspx
我找到了内部连接的解释(下)。 innerJoinQuery 的类型可能是什么,因为它看起来像是 2 个字符串的混搭,但我们不知道结果类型是什么。
引用:
连接操作在数据源中未明确建模的序列之间创建关联。例如,您可以执行联接以查找具有相同位置的所有客户和分销商。在 LINQ 中,join 子句总是针对对象集合而不是直接针对数据库表。
C#
var innerJoinQuery =
from cust in customers
join dist in distributors on cust.City equals dist.City
select new { CustomerName = cust.Name, DistributorName = dist.Name };
在 LINQ 中,您不必像在 SQL 中那样经常使用连接,因为 LINQ 中的外键在对象模型中表示为包含项目集合的属性。例如,一个 Customer 对象包含一个 Order 对象的集合。您无需执行连接,而是使用点符号访问订单:
编辑:让我们重新表述这个问题。除了var,我还能在这里放什么?
【问题讨论】:
-
它的某种形式的
ienumerable<annontype> -
在这种情况下你必须使用
var。 -
没有类型推断 (var) 就没有 LINQ
-
您可以输入
dynamic,但这会破坏编译器。或者您可以让它选择您定义的新类型。 -
“这让我非常恼火”...我建议你克服你的烦恼并接受匿名类型。没有它们,Linq 将成为主要的 PITA。使用它们不会放弃任何类型安全。