我有类似下面的课程结构。
ObservableCollection<Group> deviceCollection = new ObservableCollection<Group>();
public class Group
{
public string Name { get; set; }
public List<TargetSelectionStructure> TargetCollection { get; set; }
}
public class TargetSelectionStructure
{
public string ItemId { get; set; }
public string Name { get; set; }
public bool IsGroup { get; set; }
}
来自可观察的集合对象deviceCollection。我需要将与IsGroup属性匹配的集合作为false。所以我写了像
var currentStruct = deviceCollection.Where(d => d.TargetCollection.Any(t => t.IsGroup == false));
现在,currentStruct应该包含基本上List<TargetSelectionStructure>
的集合。我无法将currentStruct转换为List<TargetSelectionStructure>
的类型
我该如何解决这个问题?
答案 0 :(得分:0)
您无法强制转换,因为currentStruct
是IEnumerable<Group>
。
我认为你的查询需要看起来像这样:
var currentStruct = deviceCollection.SelectMany(x => x.TargetCollection)
.Where(x => !x.IsGroup).ToList();
这会返回TargetSelectionStructure
的所有Group
个IsGroup == false
个实例。
你的问题并不完全清楚。您可以通过第二种方式解释您的问题:如果至少其中一个实例TargetSelectionStructure
,您希望拥有Group
个IsGroup == false
个实例。
要实现此目的,您将使用此查询:
var currentStruct = deviceCollection.Where(x => x.TargetCollection
.Any(y => !y.IsGroup))
.SelectMany(x => x.TargetCollection)
.ToList();