好吧,我試圖得到這個工作。這是我第一次使用LINQ。到目前爲止,除了我一直在試圖弄清楚的一點小瑕疵外,沒關係。WHERE子句和發送2個無與倫比PARAMS到自定義方法
場景:我有2名泛型列表我送的方法。該方法在下面給出了一個僅列出那些對象(聯合)的列表,在這兩個對象中都有一個特定的ID。這些列表可以具有不同的長度和不同的ID順序。目標或我想要做的是從比較這兩個列表中取回,這兩個列表都是具有相同ID的對象列表。 但此外,當我發現在這兩個列表(按ID)匹配的對象不給我回該對象還沒有,除非調用OptionsMatch也是如此(這就是爲什麼我有& &)。
主要的問題我已經是列表的長度可以是完全不同的,在ID列表甚至差異。但是我們知道,我們傳遞給我的方法的所有列表都將具有某些通用性,這些對象將通過ID進行匹配......不管是什麼樣的長度或順序,我們所比較的2個列表都是......我們希望只有當對匹配的ID集合的OptionsMatch調用也匹配時才返回列表的聯合。
這裏是我的LINQ證明(原件)
List<SavedItemOption> finalItemOptions = savedItemOptions.Where(y => itemOptions.All(x => OptionsMatch(x,y) && (y.actID == x.Id))).ToList();
我最近把它改成這樣:
列表finalItemOptions = savedItemOptions.Where(Y =>(y.actID == x.Id )& & itemOptions.All(x => OptionsMatch(x,y)))。ToList();
但同樣的問題是,LINQ是y隨x中所有其他ID進行比較的第一個ID。那很棒。取第一個y.actID並查看所有x的x.ID.但隨後停止。它不會移動到下一個savedItemOptions索引,並再次將y.actID與所有x的x.ID進行比較。
這個問題:列表 finalItemOptions = savedItemOptions.Where(Y =>(y.actID == x.Id)&& itemOptions.All (x => OptionsMatch(x,y)))。ToList(); 是,當我調試,通過列出第二迭代期間,在無序列表的第二個ID是不一樣的,所以它永遠不會結束了打我的OptionsMatch方法的第二次左右通過LINQ迭代。它看到itemOptions [1]中的ID與savedItemOptions [1]中的id不同,因此會跳過OptionsMatch方法 –
PositiveGuy
2009-12-09 16:27:59
請編輯您的問題,而不是向其添加註釋...並添加一些示例數據。從你所說的話,我以爲你會*想*它跳過OptionsMatch對不同ID的配對... – 2009-12-09 16:29:23