【问题标题】:Combining two tables using linq使用 linq 组合两个表
【发布时间】:2012-01-12 02:07:51
【问题描述】:

我有两个 linq - sql 查询,我想知道如何加入它们..

第一次查询

 var ab = from a in Items_worker.getCEAItems()
                where a.ProjectCode == lbl_projectCode.Text
                select new
                {
                    a.ID
                };

第二次查询

 var j = from c in tblInc_worker.get(c => c.MarginID == MarginID && c.IncTypeID == "CAPEX")
                orderby c.DateCreated
                select c.ID;

第一个查询将返回:

fasf-1212-1212-1212-1212

afaa-1414-1414-1414-1414

第二个查询将返回:

fasf-1212-1212-1212-1212

afaa-1414-1414-1414-1414

0000-0000-0000-0000-0000

1111-1111-1111-1111-1111

问题是我怎么可能加入这两个表。其中第二个查询应返回在第一个查询中找到的具有相同 ID 的所有记录加上包含“0000-0000-0000-0000-0000”第二个查询的 id..

结果应该是:

fasf-1212-1212-1212-1212

afaa-1414-1414-1414-1414

0000-0000-0000-0000-0000

【问题讨论】:

    标签: linq linq-to-sql linq-to-objects


    【解决方案1】:

    您可以使用联合来连接这两个查询,例如将您的第二个查询分成两部分,条件如下:

    var ab = from a in Items_worker.getCEAItems() 
                where a.ProjectCode == lbl_projectCode.Text 
                select new 
                { 
                    a.ID 
                }; 
    
    
    var j = from c in tblInc_worker.get(c => c.MarginID == MarginID && c.IncTypeID == "CAPEX") 
                orderby c.DateCreated 
                select c.ID where c.ID.Equals("0000-0000-0000-0000-0000"); 
    
    var j1 = from c in tblInc_worker.get(c => c.MarginID == MarginID && c.IncTypeID == "CAPEX") 
                orderby c.DateCreated 
                select c.ID where !(c.ID.Equals("0000-0000-0000-0000-0000"));
    
    var result = ab.Union(j.Union(j1));
    

    希望这会有所帮助..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多