簡體   English   中英

LINQ創建一個嵌套列表

[英]LINQ Create a nested List

我正在嘗試將平面列表轉換為嵌套列表。

這是我的平面清單:

public class DefectLocationCount {
    public string LocationName { get; set; }
    public string DefectName { get; set; }
    public int TotalCount { get; set; }
}

這是我的嵌套列表:

public class DefectLocationOutput
{
    public string DefectName{ get; set; }
    public List<int> TotalCount{ get; set; }
}

這是我的linq查詢以填充平面列表

var results = (from def in rep.tblDefects
               join defLoc in 
                  (from defDet in rep.tblMovementDefects
                     join det in rep.tblMovementDetails on defDet.MovementDetailId equals det.MovementDetailId
                     join loc in rep.tblLocations on det.ToLocationId equals loc.LocationId
                     join hed in rep.tblMovementHeaders on det.MovementHeaderId equals hed.MovemenHeaderId
                     where hed.DateCreated >= fromDate && hed.DateCreated <= toDate
                     select new { loc.LocationName, defDet.DefectId, loc.LocationId }
                   ) on def.DefectId equals defLoc.DefectId
                   group def by new { def.DefectName, defLoc.LocationId, defLoc.LocationName } into joined
                   select new
                   {
                       LocationName = joined.Key.LocationName,
                       LocationId = joined.Key.LocationId,
                       DefectName = joined.Key.DefectName,
                       TotalCount = joined.Count()
                    }).OrderBy(x => x.LocationId);

編輯

這就是我想要實現的 在此處輸入圖片說明 List<DefectLocationOutput>的格式,而不是null值具有0

如何才能做到這一點?

我不太了解您在等待什么結果,但這也許會幫助您:

DefectLocationCount cl1 = new DefectLocationCount()
            {
                DefectName = "Name1",
                LocationName = "Location1",
                TotalCount = 2
            };

DefectLocationCount cl2 = new DefectLocationCount()
            {
                DefectName = "Name1",
                LocationName = "Location2",
                TotalCount = 3
            };

DefectLocationCount cl3 = new DefectLocationCount()
            {
                DefectName = "Name2",
                LocationName = "Location3",
                TotalCount = 6
            };

var lstCl = new List<DefectLocationCount>();
lstCl.Add(cl1);
lstCl.Add(cl2);
lstCl.Add(cl3);

var result = lstCl.GroupBy(x => x.DefectName).Select(x => new DefectLocationOutput() { DefectName = x.Key, TotalCount = lstCl.Where(y => y.DefectName == x.Key).Select(y => y.TotalCount).ToList() });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM