联合两个Linq查询 [英] Union Two Linq Queries

查看:48
本文介绍了联合两个Linq查询的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个LinqToSql查询,它们返回结果集:

I have two LinqToSql queries that return result sets:

var grResults = (from g in ctx.GeneralRequests
                             join rt in ctx.RequestTypes on g.RequestTypeId equals rt.RequestTypeId
                             join sub in ctx.Logins on g.SubmitterStaffId equals sub.LoginId
                             join onb in ctx.Logins on g.OnBehalfOfStaffId equals onb.LoginId
                             where sub.GadId == gadId
                             select new
                             {
                                 Status = "Submitted",
                                 RequestId = g.GeneralRequestId,
                                 Submitter = sub.UserName,
                                 OnBehalf = (onb == null ? string.Empty : onb.UserName),
                                 RequestType = (rt == null ? string.Empty : rt.Description),
                                 ProjectName = (g == null ? string.Empty : g.ProjectName) ,
                                 Comments =  (g == null ? string.Empty :  g.Comments),
                                 LastUpdate = g.LastUpdateDate
                             });

  var grdResults = (from gd in ctx.GeneralRequestDrafts
                                  join rt in ctx.RequestTypes on gd.RequestTypeId equals rt.RequestTypeId
                                  into tempRequestTypes
                                  from rt1 in tempRequestTypes.DefaultIfEmpty()
                                  join onb in ctx.Logins on gd.OnBehalfOfStaffId equals onb.LoginId
                                  into tempOnBehalf
                                  from onb1 in tempOnBehalf.DefaultIfEmpty()
                                  join sub in ctx.Logins on gd.SubmitterStaffId equals sub.LoginId                                  
                                  where sub.GadId == gadId
                                  select new
                                  {
                                      Status = "Draft",
                                      RequestId = gd.GeneralRequestDraftId,
                                      Submitter = sub.UserName,
                                      OnBehalf = (onb1 == null ? string.Empty : onb1.UserName),
                                      RequestType = (rt1 == null ? string.Empty : rt1.Description),
                                      ProjectName = (gd.ProjectName == null ? string.Empty : gd.ProjectName),
                                      Comments = (gd.Comments == null ? string.Empty : gd.Comments),
                                      LastUpdate = gd.LastUpdateDate
                                  });

问题是当我尝试合并它们时.

The problem is when I try to Union them.

 var results = grResults.Union(grdResults).OrderByDescending(r => r.LastUpdate);

即使两个单独的查询都返回了记录,也不会返回任何记录.

This returns no records even though the two individual queries do.

推荐答案

由于这两个查询似乎并不相互依赖,因此,如果您只想获取一个列表,则只需执行两个查询并合并每个查询的结果即可.

Since the 2 queries don't appear to rely on each other just execute both and union the results of each if you are just trying to get a single list.

var results = grResults.ToList().Union(grdResults.ToList())
    .OrderByDescending(r => r.LastUpdate);

这篇关于联合两个Linq查询的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆