按字段分组并获取其他字段

时间:2015-09-01 13:49:55

标签: c# linq group-by

我有一个包含大量数据和一些字段的A类列表,例如:

public class ConteudoAgenda
{
    public string Horario { get; set; }
    public int IdAtividade { get; set; }
    public string NomeAtividade { get; set; }
    public string IdProfessor { get; set; }
    public string Professor { get; set; }
    public string Descricao { get; set; }
    public string Modalidade { get; set; }
    public string Kcal { get; set; }
    public string Publico { get; set; }
    public string Duracao { get; set; }
    public string HorarioAula { get; set; }
}

我想由Horario和HorarioAula分组,

我做了:

var resultGrouped = (from lista in listaHorario
    group lista by new 
    {
        Horario = lista.Horario,
        HorarioAula = lista.HorarioAula
    }
    into itemsGrouped
    select itemsGrouped).ToList();

但是resultGrouped看起来很奇怪,只有Horario和HorarioAula作为关键......

我该如何处理其他字段?

1 个答案:

答案 0 :(得分:0)

group by返回一组分组 - 基本上类似于

IEnumerable<KeyValuePair<YourKey, IEnumerable<YourFullType>>>

外部集合中的每个项目都包含一个键和一组行。这取决于你对其他人的想法。

例如,如果您想计算集合中奇数和偶数的数量,可以使用以下内容:

var numbers = new [] { 12, 32, 3, 47, 48 };

var results =
  from number in numbers
  group number by (number % 2)
  into groupedNumbers
  select 
    new 
    { 
      Group = groupedNumbers.Key == 0 ? "Even" : "Odd", 
      Count = groupedNumbers.Count() 
    };