繁体   English   中英

Linq查询-联接2个表

[英]Linq query - Join 2 tables

如图所示,我想在2个表之间建立连接。

在SITE和CONFIGURE之间联接

我只是从C#开始。

在这里,我已经完成了:

var sitesDB = from sites in this.lSites
    from configure in sites.CONFIGURECollection
    where sites.ID == configure.SITE_ID
    select sites.KEY;

没用

和:

var sitesDB = from sites in this.lSites
    from configure in sites.CONFIGURECollection
    join config in this.lSites on sites.ID equals config.ID
    select sites.KEY;

不工作

这里lSites的声明:

public List<SITE> lSites { get; private set; }

我要进行此联接,因为必须根据该联接在表中添加列。 谢谢 ! :)

根据您可能尝试做的事情,我为您提供三种可能的解决方案:

  1. SITE和CONFIGURE是数据库或存储中的不同表。 然后,您应该对这两个表都有引用,查询将如下所示(假设CONFIGURE表被引用为lconfigure):

     var sitesDB = from site in lsites join config in lconfigure on sites.ID equals config.ID select site.Key; 
  2. 但是,如果声明示例仅显示一个站点列表,然后查看您的查询似乎试图执行的操作,则实际上是在找到所有引用了具有相同ID的配置的站点之后。 该查询将执行以下操作:

     var sitesDB = from site in lsites where site.CONFIGURECollection.Where(x => x.ID == l1.ID).FirstOrDefault() != null select site.Key; 
  3. 根本问题是您试图将每个站点上的表与所有站点连接起来。 如果要这样做,可以先将所有CONFIGURECollection:s添加到一个列表中并使用它。

     var lconfigure = new List<CONFIGURE>(); foreach (var site in sites) { lconfigure.AddRange(site.CONFIGURECollection); } 

之后,您使用我列出的第一个查询。

您想要这样的东西吗?

from sites in this.lSites
join configure in sites.CONFIGURECollection on sites.ID equals configure.SITE_ID
select sites.key;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM