首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有匿名类型的多个Linq (扩展方法)连接

带有匿名类型的多个Linq (扩展方法)连接
EN

Stack Overflow用户
提问于 2015-03-23 22:00:02
回答 2查看 1.1K关注 0票数 0

在C#中,我尝试执行多个扩展-方法联接,其中第二个连接具有由第一个连接生成的匿名类型的可枚举性:

代码语言:javascript
复制
List<Contact> filteredContactList = GetFullContacts()
    .Join(GetContactCompanyRoles()
        , ct => ct.IdContact
        , ctCmpRole => ctCmpRole.IdContact
        , (ct, ctCmpRole) => new { Contact = ct, ContactType = ctCmpRole.ContactType })
    .Join(GetContactRoles()
        , ctf => new { ctf.Contact.IdContact, ctf.ContactType }
        , ctRole => new { ctRole.ContactId, ctRole.ContactType }
        , (ctf, ctRole) => new { Contact = ctf.Contact, PrimaryInd = ctRole.IsPrimary})
    .Select(rec => rec.Contact)
    .ToList();

ct和ctf.Contact为接触型。

然而,当我试图编译时,我得到了以下错误:

方法System.Linq.Enumerable.Join.的类型参数不能从使用中推断。尝试显式指定类型参数。

是否有一种方法可以避免此错误,而不必为第一个联接中的匿名类型创建一个实际的类?还有其他我没有考虑的选择吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-23 22:10:02

我在这里注意到一个明显的排印错误:

代码语言:javascript
复制
    , ctRole => new { ctRole.IdContact, ctRole.ConatactType }

也许你的意思是:

代码语言:javascript
复制
    , ctRole => new { ctRole.IdContact, ctRole.ContactType }

也就是说,使用ContactType而不是ConatactType。

在解决这个问题之后,通过注释/聊天,我们确定编译器错误仍然存在,因为用于设置多键联接的一些匿名类没有相同的成员名。换句话说,而不是:

代码语言:javascript
复制
   , ctf => new { ctf.Contact.IdContact, ctf.ContactType }
    , ctRole => new { ctRole.ContactId, ctRole.ContactType }

成员名称需要在两个匿名类之间进行规范化:

代码语言:javascript
复制
   , ctf => new { ContactID = ctf.Contact.IdContact, ctf.ContactType }
    , ctRole => new { ContactID = ctRole.ContactId, ctRole.ContactType }
票数 3
EN

Stack Overflow用户

发布于 2015-03-23 23:21:01

在Vincent的帮助下,由于属性名称不匹配,编译器无法计算join子句参数中的两个匿名类型。加法

代码语言:javascript
复制
ContactID = 

对于这两个匿名初始化器,代码都能够编译。

代码语言:javascript
复制
.Join(GetContactRoles()
    , ctf => new { ContactID = ctf.Contact.IdContact, ctf.ContactType }
    , ctRole => new { ContactID = ctRole.ContactId, ctRole.ContactType }
    , (ctf, ctRole) => new { Contact = ctf.Contact, PrimaryInd = ctRole.IsPrimary})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29221271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档