简体   繁体   English

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

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

I've the following classes 我有以下课程

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

From the database i get the list of RRSDto. 从数据库中,我获得RRSDto的列表。 i need to convert the list of RRSDto to list of RRDS. 我需要将RRSD列表转换为RRDS列表。 The Id, Title, ProjectTile, RNumber, VNumber can be same but the RDId will be different. Id,Title,ProjectTile,RNumber,VNumber可以相同,但RDId可以不同。

This is what i've tried with LINQ: 这是我用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();

Instead of FirstOrDefault i want the list of RDIds. 而不是FirstOrDefault我想要RDIds的列表。 How do i get it using LINQ? 如何使用LINQ获得它?

Thanks in advance, Suyog 在此先感谢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