使用linq组合两个表

时间:2012-01-12 02:07:51

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

我有两个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;

First Query将返回:

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

1 个答案:

答案 0 :(得分:0)

您可以使用union来加入这两个查询,例如将第二个查询分成两部分,条件如下:

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));

希望这会有所帮助..