2015-04-08 68 views
0

我有以下無法做到正確相交

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

我想弄清楚共同的部門ID的。 Intersect的謂詞中會包含什麼?

+0

所以你想在'deptIDs'中把所有具有'Id'的Department對象?對, – tchrikch

+0

是的,那是真的 –

回答

1

Enumerable.Intersect預計的相同類型的參數來過濾。因此,爲了執行一組交叉點,因爲你正在試圖在串的陣列,以通過,一個示例可以是

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

我假設你有字符串類型的DepartmentName屬性。執行選擇操作將返回IEnumerable<string>。然後我傳入數組,這將返回兩個枚舉集的交集。

2

您可以使用WhereContains代替Intersect

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

使用以下,而不是交集:

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

對於相交,你需要同樣類型的實體。

希望它有幫助...

謝謝。

2

假設int類型上DepartmentId屬性是足以與Contains()操作

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