如何LINQ过滤自定义对象?

时间:2013-09-21 18:21:57

标签: c# .net linq list

我正在使用以下类,在我的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> < / p>

由于过滤器是针对子列表的,因此我被困在这里,关于如何通过LINQ完成它

2 个答案:

答案 0 :(得分:2)

您没有指定所有 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();

答案 1 :(得分:0)

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 hprivate public使public成为 class Parent { string a; string b; int c; //MyEnum d; public List<Sub> e; } class Sub { String f; int g; public bool h; } 或为这两个变量添加一些属性然后替换这些变量变量名称在上面的LINQ中有相应的属性名称。
例如,我已经创建了这些变量{{1}}

{{1}}