gpt4 book ai didi

c# - 用于过滤的 LinQ 语句

转载 作者:行者123 更新时间:2023-11-30 21:03:24 26 4
gpt4 key购买 nike

我试图过滤掉 ObservableCollection<MainBusinessObject>我需要过滤集合中所有具有 Subobject.PropertyX == true 的项目.

  MainBusinessObject 
- PropertyA int
- PropertyB string
- ListOfSubobject ObservableCollection<Subobject>

Subobject
- PropertyX bool
- PropertyY int
- PropertyZ - string

我真的很想远离循环和 if 语句,但我似乎无法正确使用 LinQ 语句。这是我目前所拥有的:

return (MainBusinessObjectCollection) 
listOfMainBusinessObject.Where(x =>
(x as MainBusinessObject).CanBePartitioned == true);

编辑我需要过滤掉 ListOfSubobject来自主要业务对象

最佳答案

取决于您是希望任何子对象具有该属性还是所有子对象都具有该属性:

var filteredList = listOfMainBusinessObject
.Where(x => x.ListOfSubobject.Any(s=>s.PropertyX));

var filteredList = listOfMainBusinessObject
.Where(x => x.ListOfSubobject.All(s=>s.PropertyX));

还有一些转换似乎无效或不必要。要转换为 MainBusinessObjectCollection(假设它是 MainBusinessObject 的集合),您可能必须从 IEnumerable 对其进行初始化Where 返回:

var newList = new MainBusinessObjectCollection(filteredList);

关于c# - 用于过滤的 LinQ 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12916407/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com