Как спроектировать простой набор данных в анонимный тип другой формы - PullRequest
1 голос
/ 07 марта 2012

У меня есть простой набор данных, который я не могу понять, как создать проекцию, которую я хочу, используя LINQ.

public class Score {
  public string Name { get; set; }
  public int Value { get; set; }
}

var scores = new List<Score> {
  new Score { Name = "jesse", Value = 10 },
  new Score { Name = "jesse", Value = 12 },
  new Score { Name = "jesse", Value = 15 },
  new Score { Name = "billy", Value = 5 },
  new Score { Name = "billy", Value = 7 },
  new Score { Name = "billy", Value = 20 },
  new Score { Name = "colin", Value = 25 },
  new Score { Name = "colin", Value = 13 },
  new Score { Name = "colin", Value = 8 }
};

Мне нужно спроецировать «баллы» в анонимный тип с помощью следующегоструктура.

{
  series : [
    { name : "jesse", data : [10, 12, 15 ] },
    { name : "billy", data : [ 5,  7, 20 ] },
    { name : "colin", data : [25, 13,  8 ] }
  ]
}

Любая помощь приветствуется.

Ответы [ 2 ]

3 голосов
/ 07 марта 2012
var result = new {
    series = from score in scores
           group score.Value by score.Name into nameValues
           select new
           {
             name = nameValues.Key,
             data = nameValues
           }
};
1 голос
/ 07 марта 2012

Соответствует ли это структуре, которую вы хотите?

var query = scores.GroupBy(s => s.Name);
var result = query.Select(q => new {
    Name = q.Key, 
    Data = q.ToArray().Select(k => k.Value)
});
var anotherAnon = new {series = result.ToArray()};
...