根据枚举值选择列表部分

时间:2014-05-21 15:51:37

标签: c# linq

我有一个c#app。我有自定义类型结果列表,如下所示。该列表称为“myResultList”。

enumResult { noResult = 0, win = 1, lose = 2 }

class Result
{
  public enumResult OutCome {get; set;}
  public double Frequency {get;set;}
  public string GroupName {get; set;}
  public double TotalValue {get; set;}
}

myResultList包含许多元素。我希望将结果等于的所有元素选入新列表。我相信LINQ可能是这项任务的最佳选择,如果我错了,请纠正我。如何根据枚举查询列表?

2 个答案:

答案 0 :(得分:6)

var lostResults = myResultList.Where(r => r.OutCome == enumResult.lose).ToList();

注意:考虑为类型和公共成员设置Pascal Case名称。并且不要在类型名称中包含前缀。 E.g。

public enum Outcome
{
    NoResult,
    Win,
    Lose
}

如果您需要按其他类型的结果过滤结果,请考虑使用查找:

var results = myResultList.ToLookup(r => r.OutCome);

然后按类型获得结果很简单:

var wonResults = results[enumResult.won];

答案 1 :(得分:4)

var newList = myResultList.Where(r => r.OutCome == enumResult.lose).ToList();