给定对象:
class Parent
{
private int id;
public int Id
{
get { return id; }
set { id = value; }
}
private List<Child> childrenList;
public List<Child> ChildrenList
{
get { return childrenList; }
set { childrenList = value; }
}
}
class Child
{
private int idSub;
public int IdSub
{
get { return idSub; }
set { idSub = value; }
}
private bool isST;
public bool IsST
{
get { return isST; }
set { isST = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个List<Parent> parentList = new List<Parent>()内部对象,其中有一个名为 ChildrenList 的Parent列表。Child
Child有一个属性IsST。
我只想返回Child属性IsST等于 true 的 ,如果Parent不满足条件,则不需要返回。
返回的两个列表都需要输入其各自的类型。
到目前为止我所拥有的:
List<Parent> parentList = new List<Parent>()
{
new Parent()
{
Id = 1,
ChildrenList = new List<Child>()
{
new Child()
{
IdSub = 1,
IsST = true
},
new Child()
{
IdSub = 2,
IsST = true
}
}
},
new Parent()
{
Id = 2,
ChildrenList = new List<Child>()
{
new Child()
{
IdSub = 3,
IsST = false
},
new Child()
{
IdSub = 4,
IsST = true
}
}
},
new Parent()
{
Id = 3,
ChildrenList = new List<Child>()
{
new Child()
{
IdSub = 5,
IsST = false
},
new Child()
{
IdSub = 6,
IsST = false
}
}
}
};
var parentFilteredList = parentList
.Select(c => c.ChildrenList
.Where(d => d.IsST)
.ToList())
.ToList();
Run Code Online (Sandbox Code Playgroud)
但其中的父母名单parentFilteredList不是类型List<Parent>。
我需要它是List<Parent>因为Parent实际情况中的对象有很多属性,以及Child. Select new这不是一个选择。
有什么帮助吗?
如果您希望返回至少一个孩子的 ST 为真的所有父母 -
var parentFilteredList = parentList
.Where(c => c.ChildrenList.Any(d => d.IsST))
.ToList();
Run Code Online (Sandbox Code Playgroud)
或者,如果您还想过滤这些父母中的孩子列表 -
var parentFilteredList = parentList
.Where(c => c.ChildrenList.Any(d => d.IsST))
.Select(c =>
{
c.ChildrenList = c.ChildrenList.Where(d => d.IsST).ToList();
return c;
}).ToList();
Run Code Online (Sandbox Code Playgroud)
请注意,这会影响你的原生父母 - 我不确定这是一个理想的结果。
| 归档时间: |
|
| 查看次数: |
3580 次 |
| 最近记录: |