我对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子句中某个表达式的类型不正确。调用“加入”时类型推断失败。
我需要使用匿名类型,因为我的目标是添加另一列来加入。
关于为什么会发生这种情况以及如何解决的任何想法?
答案 0 :(得分:12)
您应该告诉编译器它必须比较哪些属性:
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
进行比较。