将两个查询简化为具有相同类型linq的查询

时间:2014-10-18 02:49:31

标签: c# sql asp.net 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个不同的查询,然后将它们一起添加以生成要在{{1}中使用的单个列表 }。

我想要的是只对数据库使用1个查询,并将导致其中两个表合并。

我该怎么办?是否可以使用多个连接?

1 个答案:

答案 0 :(得分: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();