根据枚举的值选择列表的部分
本文关键字:列表 选择 枚举 | 更新日期: 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();