根据枚举的值选择列表的部分

本文关键字:列表 选择 枚举 | 更新日期: 2023-09-27 18:04:22

我有一个c#应用程序。我有类型result的自定义列表,如下所示。该列表名为"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包含许多元素。我希望将result等于lose的所有元素选择到一个新的列表中。我相信LINQ可能是最适合这个任务的,如果我错了请纠正我。如何基于枚举查询列表?

根据枚举的值选择列表的部分

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

注意:考虑为类型和公共成员使用Pascal Case名称。并且不要在类型名称中包含前缀。例如

public enum Outcome
{
    NoResult,
    Win,
    Lose
}

如果您需要通过其他类型的结果来过滤结果,那么考虑使用lookup:

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

那么按类型获取结果就很容易了:

var wonResults = results[enumResult.won];
var newList = myResultList.Where(r => r.OutCome == enumResult.lose).ToList();