无法正确交叉

时间:2015-04-08 11:39:20

标签: c# linq

我有以下

var deptRecs= DepartmentRecords; //it is of type IEnumerable<Department>
var deptIDs= new string[] { "1", "2" };
var result = deptIDs.Intersect(?????)

我想弄清楚常见的部门ID。什么会出现在相交的谓词中?

4 个答案:

答案 0 :(得分:3)

使用以下代替Intersect:

deptRecs.Where(d=>deptIDs.Contains(d.DeptId))

对于相交,您需要相同类型的实体。

希望它有所帮助...

感谢。

答案 1 :(得分:2)

您可以Where使用Contains代替Intersect

 var result = deptRecs.Where(x => deptIDs.Contains(x.Id)).ToList();

答案 2 :(得分:2)

假设Idint类型的Department属性,只需使用Contains()操作过滤它们就足够了

var result  = deptRecs.Where(r=>deptIDs.Contains(r.Id.ToString())) 

答案 3 :(得分:1)

Enumerable.Intersect期望相同类型的参数。因此,要执行集合交集,当您尝试传入字符串数组时,示例可以是

DepartmentRecords.Select(i=>i.DepartmentName).Intersect(deptIDs);

我假设你有一个类型为string的DepartmentName属性。执行选择操作将返回IEnumerable<string>。然后我传入数组,它将返回两个枚举的集合交集。