如何过滤相关的儿童记录 [英] How do I filter related Child Record
问题描述
UnitOccupierDetails
)的父实体( UnitOccupier
)。我需要过滤子实体以返回单个记录。如何做到这一点? var q =从uo在_unitOccupierContext.GetUnitOccupierQuery()
其中uo.UnitOccupierDetails。 ????
--->我不能得到这里的子属性
谢谢
您不能包含所选父项的过滤子集。您只能包含完整的集合或根本没有子集合。但是,作为一种解决方法,您可以使用中间匿名类型,如下所示:
var q =(来自uo in _unitOccupierContext.GetUnitOccupierQuery )
选择新的{
Parent = uo,
Childs = uo.UnitOccupierDetails
.Where(uod => uod.MyDetailsProp == MyDetailsValue)
})。 FirstOrDefault();
if(q!= null)
{
UnitOccupier selectedUnitOccupier = q.Parent;
selectedUnitOccupier.UnitOccupierDetails = q.Childs.ToList();
// selectedUnitOccupier现在只包含被过滤的孩子
}
编辑
如果你想查询孩子并包含他们的父母(与评论中的问题相关),你可以使用:
var q = _unitOccupierContext.GetUnitOccupierQuery()
.SelectMany(uo => uo.UnitOccupierDetails
.Where(uod => uod.MyDetailsProp == MyDetailsValue))
.Include(uod => uod.UnitOccupier)
.FirstOrDefault(); //或.ToList(),如果您期望多个记录
// q现在为空或单个UnitOccupierDetails实体
//引用其父
我假设你的 UnitOccupierDetails
类有一个导航属性到父 UnitOccupier
。
I am using RIA services. I need to select a parent entity (UnitOccupier
) which has a number of related child entities(UnitOccupierDetails
). I need to filter the child entities to return a single record. How do I do this?
var q = from uo in _unitOccupierContext.GetUnitOccupierQuery()
where uo.UnitOccupierDetails.????
---> I cant get to the child properties here
Thanks
You cannot include a filtered child collection of the selected parent. You can only include either the full collection or no child collection at all. But as a workaround you could use an intermediate anonymous type, like so:
var q = (from uo in _unitOccupierContext.GetUnitOccupierQuery()
select new {
Parent = uo,
Childs = uo.UnitOccupierDetails
.Where(uod => uod.MyDetailsProp == MyDetailsValue)
}).FirstOrDefault();
if (q != null)
{
UnitOccupier selectedUnitOccupier = q.Parent;
selectedUnitOccupier.UnitOccupierDetails = q.Childs.ToList();
// selectedUnitOccupier now only contains the filtered childs
}
Edit
If you want to query for the childs and include their parents (related to question in comment) you could use:
var q = _unitOccupierContext.GetUnitOccupierQuery()
.SelectMany(uo => uo.UnitOccupierDetails
.Where(uod => uod.MyDetailsProp == MyDetailsValue))
.Include(uod => uod.UnitOccupier)
.FirstOrDefault(); // or .ToList() if you expect more than one record
// q is now null or a single UnitOccupierDetails entity
// with a reference to its parent
I am assuming here that your UnitOccupierDetails
class has a navigation property to the parent UnitOccupier
.
这篇关于如何过滤相关的儿童记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!