Объединение двух таблиц с использованием linq - PullRequest
1 голос
/ 12 января 2012

У меня есть два запроса 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

вопрос в том, как я могу присоединиться к двум столам. При этом второй запрос должен возвращать все записи с одинаковым идентификатором, найденным в первом запросе, плюс идентификатор, содержащий второй запрос «0000-0000-0000-0000-0000».

Результат должен быть:

fasf-1212-1212-1212-1212

AFAA-1414-1414-1414-1414

0000-0000-0000-0000-0000

1 Ответ

0 голосов
/ 12 января 2012

Вы можете использовать объединение, чтобы объединить оба запроса, например разделить ваш второй запрос на два с такими условиями, как:

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

Надеюсь, это поможет ..

...