如何从LINQ中的同一子集中选择和排除记录

时间:2013-12-06 10:29:26

标签: c# sql linq

我有一个包含字段PolicyToX的示例连接表Id, PolicyId, PersonId, SchoolId。记录始终保存,其中一个FK为NULL,例如1, 1, 5, NULL

我想在LINQ中编写一个查询,当给出两个参数时:PersonIdSchoolId将过滤给定学校的所有策略,但不包含已绑定到给定Person的那些。< / p>

所以,如果我有一个数据集:

[Id][PolicyId][PersonId][SchoolId]
 1     1         5        NULL
 2     1        NULL       1
 3     2        NULL       1

并传递参数PersonId = 5SchoolId = 1,结果应为ID = 2的一项政策。

谢谢!

2 个答案:

答案 0 :(得分:1)

假设PolicyToX包含数据,那么您正在寻找什么?

        var ids = from e in PolicyToX where e.PersonId == personId select e.PolicyId;
        var result = from d in PolicyToX where d.SchoolId == schoolId && !ids.Contains(d.PolicyId) select d;

答案 1 :(得分:0)

var data = list.Where(x => x.SchoolId == schoolId && x.PersonId != personId);

你在说这个吗?