我有以下無法做到正確相交
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
是的,那是真的 –