在 LINQ 中使用分组依据填充对象列表
本文关键字:填充 对象 列表 LINQ | 更新日期: 2023-09-27 18:33:54
>我有以下类
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列表转换为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();
我想要RDIds列表,而不是FirstOrDefault。如何使用 LINQ 获取它?
提前感谢,苏约格
如果您
想要所有RDId
,那么只需使用Select进行投影,我认为没有任何理由使用FirstOrDefault,因为您不是在组中寻找第一个RDId
:-
,RDs = gcs.Select(g => new RD { RDId = g.RDId }).ToList()