本文介绍了类型推断在调用失败“加入”使用匿名类型时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个特殊的问题,LINQ to SQL的:

I have a peculiar problem with LINQ to SQL:

这样做是好的:

from s in Something
join a in AnotherThing
on s.NullableDateTime.Value
equals a.DateTime
select s

然而,使用匿名类型,像这样:

However, using anonymous type like so:

from s in Something
join a in AnotherThing
on new { s.NullableDateTime.Value }
equals new { a.DateTime }
select s

结果

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

I need to use anonymous types as I aim to add another column to join on.

任何想法,这是为什么发生,以及如何解决?

Any ideas as to why this is occurring and how to fix?

推荐答案

您应该告诉编译器,什么样的属性必须比较:

You should tell to compiler, what properties it must compare:

 on new { s.NullableDateTime.Value }
 equals new { Value = a.DateTime }



首先创建一个匿名类型,它看起来像这样的:

The first creates an anonymous type, which looks like this:

class A
{
    public DateTime Value { get; set; }
}

您样品中的第二行创建另一个匿名类型:

The second line in your sample creates another anonymous type:

class B
{
    public DateTime DateTime { get; set; }
}



因此,编译器无法理解,你要比较 a.value中 b.DateTime

这篇关于类型推断在调用失败“加入”使用匿名类型时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-20 18:25