Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 联合两个Linq查询_C#_Entity Framework_Linq_Linq To Sql - Fatal编程技术网

C# 联合两个Linq查询

C# 联合两个Linq查询,c#,entity-framework,linq,linq-to-sql,C#,Entity Framework,Linq,Linq To Sql,我有两个返回结果集的LinqToSql查询: 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

我有两个返回结果集的LinqToSql查询:

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
                                  });
问题是当我试图把他们结合起来时

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

这不会返回任何记录,即使两个单独的查询都会返回记录。

因为这两个查询似乎互不依赖,如果您只是尝试获取单个列表,只需执行这两个查询并合并每个查询的结果即可

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

检查单个查询的
.ToList()
结果,然后检查Union结果,以查看生成了什么SQL。我不明白Union为什么不会返回任何结果。这很奇怪。如果你不介意重复的话,你可以试试
.Concat
。我认为,考虑到你包括了最新的更新,这将是非常困难的,这可能是不同的记录之间无论如何。Concat会更快,因为它不必进行比较来尝试删除重复项。@David,请接受下面的答案。没问题,很高兴它有帮助。