2016-02-10 2 views
0

Я следующие классыPopulate объекта, используя группу, в 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. Мне нужно преобразовать список 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(); 

Вместо FirstOrDefault я хочу список RDIds. Как получить его с помощью LINQ?

Спасибо заранее, Suyog

ответ

2

Если вы хотите все RDId тогда просто проецировать их с помощью Select, я не вижу никаких причин, чтобы использовать FirstOrDefault, так как вы не ищете первый RDId в Группа: -

,RDs = gcs.Select(g => new RD { RDId = g.RDId }).ToList() 
Смежные вопросы