我正在使用以下类,在我的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完成它
答案 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 h
和private
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}}