c# linq 左連接

   var todayFinish = ds.Tables[0].AsEnumerable();

                var listTodayFinish = todayFinish
                        .Select(p => new TodayFinishRate
                        {
                            RequireDate = p.Field<DateTime>("RequireDate").ToString("HH:mm"),
                            PickStatus = p.Field<int?>("PickStatus").ToString()
                        }).ToList();

                //按需求時間 彙總 出已經完成出貨的記錄。
                var GroupTodayFinish = from a in listTodayFinish
                                       where a.PickStatus == "1"
                                       group a by new { a.RequireDate } into g
                                       select new TodayFinishRate
                                       {
                                           RequireDate = g.Key.RequireDate,
                                           FinishCount = g.Count()
                                       };

                //按需求時間 彙總 出已經今天全部叫料記錄。
                var GroupTodayFinishAll = from a in listTodayFinish
                                          group a by new { a.RequireDate } into g
                                          select new TodayFinishRate
                                          {
                                              RequireDate = g.Key.RequireDate,
                                              AllCount = g.Count()
                                          };

                var listResult = from all in GroupTodayFinishAll
                                 join a in GroupTodayFinish on all.RequireDate equals a.RequireDate into LeftTmp
                                 from tmp in LeftTmp.DefaultIfEmpty()
                                 select new TodayFinishRate
                                 {
                                     RequireDate = all.RequireDate,
                                     FinishCount = tmp==null?0:tmp.FinishCount,  //這個判斷很重要,不然報錯,因爲tmp可能爲null
                                     AllCount = all.AllCount
                                 };

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章