如何 LINQ 筛选自定义对象
本文关键字:对象 自定义 筛选 LINQ 如何 | 更新日期: 2023-09-27 18:32:12
>我正在使用以下类,在我的 C# 代码中,我正在执行数据库调用,它将从 SQL 表中获取数据并将其转换为ObjParent = List<Parent>
class Parent
{
string a;
string b;
int c;
MyEnum d;
List<Sub> e;
}
class Sub
{
String f;
int g;
bool h;
}
现在我的输入是用 c# ObjParent = List< Parent>
的,我的要求是过滤这个对象,其中条件为 (Boolean) h= True/ False
在返回类型中,它应该再次提供过滤列表objFilteredParent = List< Parent>
由于过滤器是用于子列表的,因此我被困在这里,关于如何通过 LINQ 完成它
您没有指定是否所有Sub
元素都必须满足条件,仅在其中一个元素上,但您应该使用All
或Any
方法:
var objFilteredParent = ObjParent.Where(x => x.e.All(y => y.h)).ToList();
// or
var objFilteredParent = ObjParent.Where(x => x.e.Any(y => y.h)).ToList();
Hemant 先生,
根据您的问题不清楚,您需要List<Sub>
中的所有对象都具有true
h
的值,或者其中任何一个都是true
。
如果您希望所有值都true
使用它,
List<Parent> objFilteredParent = ObjParent.FindAll(par => par.e.All(sub => sub.h));
如果您需要列表中的任何一个具有true
值使用,
List<Parent> objFilteredParent = ObjParent.FindAll(par => par.e.Any(sub => sub.h));
我在粘贴内容时注意到的另一件事是,List<Sub>
和bool h
private
使其public
或为两个变量添加一些属性,然后将这些变量名称替换为上面的 LINQ 中的相应属性名称。
例如,我已将这些变量设置为public
class Parent
{
string a;
string b;
int c;
//MyEnum d;
public List<Sub> e;
}
class Sub
{
String f;
int g;
public bool h;
}