我有以下
var deptRecs= DepartmentRecords; //it is of type IEnumerable<Department>
var deptIDs= new string[] { "1", "2" };
var result = deptIDs.Intersect(?????)
我想弄清楚常见的部门ID。什么会出现在相交的谓词中?
答案 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)
假设Id
类int
类型的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>
。然后我传入数组,它将返回两个枚举的集合交集。