我有表 A、B 和 C
B 与 A 多对一相关
我想找到所有A,其中C是B的完整子集。
以下 LINQ 查询(伪代码)代表我想要得到的。
class A
{
public B[] Bs { get; set; }
}
class B
{
public string Text { get; set; }
}
class C
{
public string Text { get; set; }
}
private static IEnumerable<A> Search(C[] C, A[] A)
{
return from a in A
where C.All(c => a.Bs.Any(b => SomeCondition(b, c)))
select a;
}
private static bool SomeCondition(B b, C c)
{
//There we comparing B and C
throw new NotImplementedException();
}
我有以下表结构
A ( a_ID INT PRIMARY KEY )
B ( b_ID INT PRIMARY KEY, a_ID INT, Text NVARCHAR(MAX) )
C ( c_ID INT PRIMARY KEY, Text NVARCHAR(MAX) )
我需要得到 ALL A,其中 B 匹配所有 C。
例子
A | a_ID |
| 1 |
| 2 |
| 3 |
B | b_ID | a_ID | Text |
| 1 | 1 | Cat |
| 2 | 1 | Dog |
| 3 | 1 | Rabbit|
| 4 | 2 | Cat |
| 5 | 2 | Cat | -- B can contain duplicates
| 6 | 2 | Rabbit|
C | c_ID | Text |
| 1 | Cat |
| 2 | Dog |
输出
| a_ID |
| 1 |