0

我有一个像下面这样的类结构。

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>.
我该如何解决这个问题?

4

1 回答 1

0

你不能施放它,因为它currentStruct是一个IEnumerable<Group>.

我认为您的查询需要如下所示:

var currentStruct = deviceCollection.SelectMany(x => x.TargetCollection)
                                    .Where(x => !x.IsGroup).ToList();

这将返回所有具有 s 的所有TargetSelectionStructure实例。GroupIsGroup == false

你的问题并不完全清楚。可以用第二种方式解释您的问题:如果其中至少一个具有 ,您希望拥有TargetSelectionStructure来自 a 的所有实例。 为此,您将使用以下查询:GroupIsGroup == false

var currentStruct = deviceCollection.Where(x => x.TargetCollection
                                                 .Any(y => !y.IsGroup))
                                    .SelectMany(x => x.TargetCollection)
                                    .ToList();
于 2012-10-12T08:30:03.780 回答