从IEnumerable按GroupBy列出

时间:2012-11-13 19:59:44

标签: c# ienumerable igrouping

我正在尝试创建队列类别显示的队列列表。为每个队列类别分配一个Enum值。

    public enum QueueCategory
{
    None=0,
    Critical=1,
    High=2,
    Orphaned=3,
    Missing=4
}

对于每个类别,我想显示这些字段。

    public class QueueInformation
{
    public string Name { get; set; }
    public Decimal PercentOfThreshold { get; set; }
    public string Host { get; set; }
    public DateTime OldestArrival { get; set; }
    public QueueCategory Category { get; set; }
}

}

如何链接这两个页面以便QueueCategory显示QueueInformation?

2 个答案:

答案 0 :(得分:2)

IEnumerable<QueueInformation> infos = ...;

foreach (var categoryGroup in infos.GroupBy(i => i.Category))
{
  Console.WriteLine("Current category: {0}", categoryGroup.Key);

  foreach (var queueInfo in categoryGroup)
  {
    Console.WriteLine(queueInfo.Name /*...*/);
  }

  Console.WriteLine("==========================");
}

答案 1 :(得分:0)

我假设你想要一个QueueCategory排序的源:

IEnumerable<QueueInformation> list = new BindingList<QueueInformation>();
var orderedList = from l in list orderby l.Category select l;

希望这有帮助