2014-10-18 11 views
0

У меня есть этот код:упрощающие два запроса в один с теми же типами LinQ

var commentData = from o in quack.BlogComments 
        join u in quack.AdminUsers 
        on o.UserId equals u.AdminUserId 
        where blogid == o.BlogId 
        select new 
        { 
         o.Comment, 
         o.CommentDate, 
         u.FirstName, 
         u.LastName 
        }; 

var commentData2 = from o in quack.BlogComments 
        join u in quack.RegularUsers 
        on o.UserId equals u.RegularUserId 
        where blogid == o.BlogId 
        select new 
        { 
         o.Comment, 
         o.CommentDate, 
         u.FirstName, 
         u.LastName 
        }; 

var l = commentData.ToList(); 
l.AddRange(commentData2); 

Как вы можете видеть выше, я делаю 2 различных запросов в базу данных, а затем добавить их вместе, чтобы сформировать один список, который будет использоваться в gridview.

Я хочу только использовать 1 запрос к базе данных и привести к объединению двух из этих таблиц.

Как я могу это сделать? возможно ли с несколькими объединениями?

ответ

1

Вы должны использовать Concat:

var commentData = (from o in quack.BlogComments 
        join u in quack.AdminUsers 
        on o.UserId equals u.AdminUserId 
        where blogid == o.BlogId 
        select new 
        { 
         o.Comment, 
         o.CommentDate, 
         u.FirstName, 
         u.LastName 
        }).Concat(from o in quack.BlogComments 
          join u in quack.RegularUsers 
          on o.UserId equals u.RegularUserId 
          where blogid == o.BlogId 
          select new 
          { 
           o.Comment, 
           o.CommentDate, 
           u.FirstName, 
           u.LastName 
          }); 

var l = commentData.ToList(); 
+0

он делает больше смысла писать 'уаг л = commentData.Concat (commentData2) .ToList()' без того вложенных запросов? Также было бы очень приятно заметить, что Lint to Sql сможет сформировать SQL-запрос с помощью UNION, что приведет к однократной поездке в базу данных. –

+0

Да, дал бы тот же результат. – MarcinJuraszek

+0

@MarcinJuraszek это все равно приведет к двум различным погодным условиям для базы данных? –

Смежные вопросы