考虑一个像这样的(简化的)表结构:
[用户]
- EMPID
- 姓名
[任命]
- (FK_APPT_USER) EMPID
- APPTYPEID
- 完全的
每个用户可以有 0..* 个约会,每个约会可以是多个 APPTYPEID 之一,可以是完整的也可以是不完整的。
我想过滤 IQueryable[USER] 查询的结果集,使其仅包括拥有某个 typeID 的 appt(比如 1)且 COMPLETE 字段位于值列表中的用户。我这样做是作为 gridview 过滤器的一部分,它允许用户选择仅显示特定约会类型的已完成或未完成的用户。
List<string> vals = new List<string> {"Y","N"}
//maybe the user has only selected Y so the above list only contains 1 element
var qry = ctx.USER.Where(x=> vals.Contains( ? ));
//bind etc
如果我与列表比较的值与 USER 对象处于 1-1 关系,这真的很容易做到,例如:
var qry = ctx.USER.Where(x=> vals.Contains(x.NAME));
但是我不明白如何处理 1 对多关系,比如我的约会表,这让我全神贯注地试图为它概念化实体 sql。任何人都可以解释如何做到这一点?