我有3个不同的实体:
E1, E2, E3
E1的属性是E2的ObservableCollection。 E2的属性是E3的ObservableCollection。
使用linq查询,我希望得到所有基于E1的E3作为起点。
我尝试过类似的东西:
Query = Query.Where<E3>(i => E1.E2List.Select(ep => ep.E3List.Select(ai => ai.id))
.Contains(i.id));
基本上意味着:将所有E3放在其中的ID位于E1的E2列表中的E3列表中
但正如你猜测的那样,这不起作用。
My starting point is this :
//make the array
E3[] array;
//get all E3 datas
IQueryable<E3> Query = DBSetE3.AsQueryable();
我必须在我的数组中获得所有结果
所以我的结果应该是:进入数组,所有链接到E2的E3对象都包含在E1中,基于E1。
例如:
Entity 1| List of E2
E1 | E2A, E2B
Entity 2 | List of E3
E2B | E3C, E3D
E2A | E3E, E3F
当我搜索与E1相关的E3时,我必须得到E3C,E3D,E3E,E3F
答案 0 :(得分:4)
您可以这样做:
SelectMany
基本上,您根据输入过滤所有E1。然后,您希望[[1,2],[3,4]]
(将结果[1,2,3,4]
展平为SelectMany
)以获取E2。然后你{{1}}它是E3s。