我有一个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可能是这项任务的最佳选择,如果我错了,请纠正我。如何根据枚举查询列表?
答案 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();