5

我对 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 子句中的表达式之一的类型不正确。对“加入”的调用中的类型推断失败。

我需要使用匿名类型,因为我的目标是添加另一列加入。

关于为什么会发生这种情况以及如何解决的任何想法?

4

1 回答 1

13

您应该告诉编译器,它必须比较哪些属性:

 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.Valueb.DateTime.

于 2013-10-02T10:55:58.717 回答