我有以下无法做到正确相交
var deptRecs= DepartmentRecords; //it is of type IEnumerable<Department>
var deptIDs= new string[] { "1", "2" };
var result = deptIDs.Intersect(?????)
我想弄清楚共同的部门ID的。 Intersect的谓词中会包含什么?
我有以下无法做到正确相交
var deptRecs= DepartmentRecords; //it is of type IEnumerable<Department>
var deptIDs= new string[] { "1", "2" };
var result = deptIDs.Intersect(?????)
我想弄清楚共同的部门ID的。 Intersect的谓词中会包含什么?
的Enumerable.Intersect预计的相同类型的参数来过滤。因此,为了执行一组交叉点,因为你正在试图在串的阵列,以通过,一个示例可以是
DepartmentRecords.Select(i=>i.DepartmentName).Intersect(deptIDs);
我假设你有字符串类型的DepartmentName
属性。执行选择操作将返回IEnumerable<string>
。然后我传入数组,这将返回两个枚举集的交集。
您可以使用Where
与Contains
代替Intersect
:
var result = deptRecs.Where(x => deptIDs.Contains(x.Id)).ToList();
使用以下,而不是交集:
deptRecs.Where(d=>deptIDs.Contains(d.DeptId))
对于相交,你需要同样类型的实体。
希望它有帮助...
谢谢。
假设int
类型上Department
类Id
属性是足以与Contains()
操作
var result = deptRecs.Where(r=>deptIDs.Contains(r.Id.ToString()))
所以你想在'deptIDs'中把所有具有'Id'的Department对象?对, – tchrikch
是的,那是真的 –