使用匿名类型时,在“加入”调用中类型推断失败
我对LINQ to SQL有一个特殊的问题:
这样做很好:
from s in Something join a in AnotherThing on s.NullableDateTime.Value equals a.DateTime select s
但是,使用匿名类型如下:
from s in Something join a in AnotherThing on new { s.NullableDateTime.Value } equals new { a.DateTime } select s
结果是
join子句中某个表达式的类型不正确。 调用“加入”时类型推断失败。
我需要使用匿名类型,因为我的目标是添加另一列来加入。
有关为什么会发生这种情况以及如何解决的任何想法?
您应该告诉编译器它必须比较哪些属性:
on new { s.NullableDateTime.Value } equals new { Value = a.DateTime }
第一个创建一个匿名类型,如下所示:
class A { public DateTime Value { get; set; } }
示例中的第二行创建另一个匿名类型:
class B { public DateTime DateTime { get; set; } }
因此,编译器无法理解,您想要将a.Value
与b.DateTime
进行比较。