2013-02-21 46 views
1

我使用實體框架4和linq/lamda表達式。我確定它是一個簡單的,但即時通訊嘗試查詢數組的集合,但獲取包含所有數組值的記錄。查詢與陣列的MVC集合

基本即時通訊做,這是什麼

var records = collection.where(x.classifications.Any(y=> Array.Contains(y.ClassificationID))).ToList() 

此作品在某種意義上,它返回一個包含任何陣列值,但我怎麼只包含數組中的所有值的記錄記錄。

希望是有道理的

編輯:

進出口標記註釋下面的答案,因爲我確實有ALL使用我的查詢中得到它的工作,但是我也不得不重新 - 寫我的查詢稍微。這就是我最終不得不...

var records = collection.Where(x=> Array.All(c=> x.Classifications.Select(l=>l.ClassificationID).Contains(c))) 

回答

0

怎麼樣使用All代替Any

var records = collection.Where(x => x.classifications.All(y => Array.Contains(y.ClassificationID))) 
         .ToList() 
+0

我試過使用所有,但這隻返回有0分類,奇數的記錄。我認爲我的問題看起來類似於http://stackoverflow.com/questions/3524466/using-the-all-operator-in-linq-to-filter-child-items-of-entityset – 2013-02-21 13:58:17

+0

@JamesBurton然後你爲什麼確定你有物品,其中所有分類包含在數組中?也許一些ClassificationIDs不在你的數組 – 2013-02-21 13:59:19

+0

中,因爲我知道哪些記錄在我的測試數據中有什麼id,從而控制了什麼是classids。我目前只通過數組中的2個值來確保其工作。這仍然不能解釋爲什麼所有返回只有0分類的項目 – 2013-02-21 14:09:21