我有以下课程
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();
我想要RDIds列表而不是FirstOrDefault。我如何使用LINQ获取它?
提前致谢, Suyog
答案 0 :(得分:2)
如果您想要所有RDId
,只需使用选择投影它们,我认为没有任何理由使用 FirstOrDefault ,因为您不是在寻找小组中的第一个RDId
: -
,RDs = gcs.Select(g => new RD { RDId = g.RDId }).ToList()