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 };