我有一个外部传递的ID数组,传递给我的方法。
任务:
到目前为止我的查询:
var externallyPassedArrayOfIds = [1, 2, 3];
var members = db.TableA
.Where(u => externallyPassedArrayOfIds.Contains(u.SubId))
.GroupBy(u => u.GroupId)
.ToList();
数据库中可能存在的内容以及将被选中的内容的示例(仅为便于理解,按组ID排序):
ID | GroupId | SubId
---------------------
1 1 4
2 1 1
3 2 1
4 2 2
5 2 4
6 2 5
7 3 1
8 3 2
9 3 3
10 3 4
11 4 1
12 4 2
13 4 3
在此示例中,它将返回行7,8,9,11,12,13,因为只有组ID 3和4具有数组中的所有subId。如果这只是一个查询,那将是很好,但这不是必须的。
如果要包含所有内容的 项目externallyPassedArrayOfIds
,请用于All
检查组中的此条件,而不是单个项目:
var members = db.TableA
.GroupBy(u => u.GroupId)
.Where(g => externallyPassedArrayOfIds.All(id => g.Any(i => i.SubId == id)))
.ToList();
该Where
条款适用于整个团体。它说,基团必须是这样的,对于每个元素id
的externallyPassedArrayOfIds
存在的至少一种元素i
的组中的g
具有i.SubId
等于id
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句