簡體   English   中英

在LINQ中使用group by填充對象列表

[英]Populate list of object using group by in LINQ

我有以下課程

public class R
{
    public Guid Id { get; set; }
    public string Title { get; set; }
    public int RNumber { get; set; }
    public int VNumber { get; set; }
}

public class RD
{
    public Guid RDId { get; set; }
}

public class RRDS
{
    public R R { get; set; }
    public string ProjectTitle { get; set; }
    public List<RD> RDs{ get; set; }
}

public class RRSDto
{
    public Guid Id { get; set; }
    public string Title { get; set; }
    public string ProjectTitle { get; set; }
    public int RNumber { get; set; }
    public int VNumber { get; set; }
    public Guid RDId { get; set; }
}

從數據庫中,我獲得RRSDto的列表。 我需要將RRSD列表轉換為RRDS列表。 Id,Title,ProjectTile,RNumber,VNumber可以相同,但RDId可以不同。

這是我用LINQ嘗試過的:

var temp = (from r in rrs
            group r by new
            {
                r.Id,
                r.Title,
                r.ProjectTitle,
                r.RNumber,
                r.VNumber,
            } into gcs
            select new RRDS()
            {
                R = new R()
                {
                    Id = gcs.Key.Id,
                    Title = gcs.Key.Title,
                    RNumber = gcs.Key.RNumber,
                    VNumber = gcs.Key.VNumber
                },
                ProjectTitle = gcs.Key.ProjectTitle,
                RDs = new List<RD>()
                {
                    new RD()
                    {
                        RDId = gcs.ToList().Select(g =>  g.RDId).FirstOrDefault()
                    }
                }
            }).ToList();

而不是FirstOrDefault我想要RDIds的列表。 如何使用LINQ獲得它?

在此先感謝Suyog

如果您想要所有RDId然后僅使用Select對其進行投影,由於您不在該組中尋找第一個RDId ,因此我看不到使用FirstOrDefault的任何理由。

 ,RDs = gcs.Select(g => new RD { RDId = g.RDId }).ToList()

暫無
暫無

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

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