【问题标题】:How do I get like to return data from multiple tables?如何从多个表中返回数据?
【发布时间】:2011-01-28 21:13:59
【问题描述】:

我正在尝试修改以下查询以从多个表中返回数据。

我有一个主联系人表,其中存储了所有联系人详细信息。公司也存储在联系人表中。公司被映射到名为 CompanyPersonMap 的连接表中的联系人。

我还有一个属性表,其中为联系人分配了某些属性,每个联系人可能有很多属性。

现在,我想返回分配了特定属性的所有联系人,以及在联系人表的不同行中找到的人的公司名称和地址。

此代码有效,但仅返回contactId。可以满足我的需要,但我不知道如何根据上述要求对其进行修改。

var peopleAndAddresses = Contacts.Where(c => c.AssignedAttributes
.Any (aa => aa.AttributeID == 1153))
.Select(x => x.ContactID);

对此有何建议?

谢谢!

编辑-

我尝试使用 .Select() 语句并通过 PersonOrgMap 表找到从联系人到其组织的路径。不幸的是,我无法获得有关该组织的任何数据。我尝试了 .Any()、.All() 和 .FirstOrDefault()。有什么建议吗?

.Select (c => new {c.FirstName, c.LastName, c.PersonOrgMap.FirstOrDefault (pom => pom.ChildContactID) })

【问题讨论】:

    标签: linq entity-framework entity-framework-4


    【解决方案1】:

    下面的代码将为您提供至少有一个 AttributeID 为 1153 的 AssignedAttribute 的所有联系人。我认为这就是您要查找的内容。

    var peopleAndAddress = Contacts
       .Where(c => c.AssignedAttributes.Any(aa => aa.AttributeID == 1153))
       .Select(c => c);
    

    但是,您的陈述“在联系人表的不同行中找到的姓名和地址”让我认为这可能不是您所需要的。您能从联系人的属性中获取公司名称和地址吗?

    【讨论】:

    • 不,我不知道如何获得公司和公司地址信息。
    • 我想我现在明白了。联系人可以是个人或公司,对吗?另外,您使用的是 EF 还是 LINQ-to-SQL?
    • 是的,联系人可以是公司或个人。我们正在使用 ef4。
    • 好的,那么 Contact 实体应该有某种导航属性到另一个代表公司的联系人。
    猜你喜欢
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2011-11-20
    • 2017-03-26
    相关资源
    最近更新 更多