我有以下类层次结构:
public class SportPlan
{
public Guid Id { get; set; }
public string Name { get; set; }
public List<Record> RecordFields { get; set; }
}
public class Record
{
public Guid Key { get; set; }
public string Alias { get; set; }
public List<Value> Values { get; set; }
}
public class Value
{
public int Index { get; set; }
public List<DayOfWeek> DaysOfWeek { get; set; }
}
我需要SportPlan.RecordFields
通过dayOfWeek
(.NET枚举)进行筛选,并Value
使用LINQ获取s的列表。我尝试过类似的方法,但是它不起作用:
var filtredExercises = SportPlan.RecordFields.Select(x => x.Values.Where(v => v.DaysOfWeek.Equals(dayOfWeek))).ToList();
而不是Select
,您需要使用Where
来过滤列表。这样的事情应该接近您想要的:
var filteredExercises = SportPlan.RecordFields
.Where(f => f.Values.Any(v => v.DaysOfWeek.Contains(dayOfWeek)))
.ToList();
这将会给你所有Record
具有A S Value
,其中DaysOfWeek
包含dayOfWeek
你正在寻找。
相反,如果您需要这些Value
对象,则可以使用以下方法:
var filteredExercises = SportPlan.RecordFields
.SelectMany(f => f.Values)
.Where(v => v.DaysOfWeek.Contains(dayOfWeek))
.ToList();
使用时SelectMany
,我们首先将Value
对象列表的列表展平为a IEnumerable<Value>
,然后使用进行过滤dayOfWeek
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句