2009-09-18 120 views
0

嗯,我有一個叫做Mamamia的對象,裏面有一些字符串屬性。我創建了這個對象的列表,並用150個項目填充它。FindAll在自定義對象列表中

我想使用List.FindAll但我實際上不知道該怎麼做。我已經試過這樣:

produto = products.FindAll(delegate(Mamamia cv) {return cv.LocalPackage.Remove(1,21) == cmbPackage.SelectedValue}; 

我不知道爲什麼委託是存在的,我只是試圖從互聯網上一些其他的代碼複製。

在此先感謝!

回答

1

委託人在那裏查看您測試的值是否是您要查找的值。對Remove的呼叫看起來令人擔憂,因爲它正在改變價值 - 當你瀏覽清單時,這很少是件好事。我想如果它是一個字符串,那麼它不是太糟糕,雖然它可能不是你以後的...

什麼是涉及的類型,你在找什麼?哦,你在使用C#3和/或.NET 3.5嗎?這將使它更容易(即使C#3對.NET 2.0意味着你可以使用lambda表達式而不是匿名方法)。

當你運行代碼的時候發生了什麼?如果它只是沒有找到任何東西,它可能可能只是因爲你正在測試引用相等(如果SelectedValue返回object)。

試試這個:

produto = products.FindAll(delegate(Mamamia cv) { 
    return cv.LocalPackage.Remove(1,21).Equals(cmbPackage.SelectedValue); 
}); 

編輯:

這聽起來像你只想要一個單一的值,如果你使用.NET 3.5會比較習慣在第一次使用LINQ地點。我會用:

string selectedText = (string) cmbPackage.SelectedValue; 
Mamamia item = products.FirstOrDefault 
        (cv => cv.LocalPackage.Remove(1,21) == selectedText); 
if (item != null) 
{ 
    // Found it; otherwise item will be null 
} 
+0

我使用.NET 3.5,當我運行代碼,我得到的錯誤: 無法隱式轉換類型「System.Collections.Generic.List '到'FindMSIProducts.Mamamia 我正在尋找一個Mamamia對象列表中的propertie – 2009-09-18 14:27:16

+1

@Felipe:您的'produto'變量的類型是'List '還是僅僅是'Mamamia'本身?如果你只是想返回一個單一的項目,然後使用'Find'方法而不是'FindAll'。如果您期望返回多個項目,則將'produto'的類型更改爲'List '。 – LukeH 2009-09-18 14:44:47

+0

produto是一個Mamamia對象和產品是一個列表這個列表可以有重複的項目,我想返回所有這些 – 2009-09-18 17:03:44

相關問題