2011-08-31 18 views
0

我正在使用Linq來獲取選擇列表項的唯一成員。如何返回這個列表... 我有什麼,現在是獲取不同的SelectListItem

var queryResult = PatientList.Select(c => c).Distinct(); 
    PatientList = (List<SelectListItem>)queryResult; 

我收到第二行鑄造錯誤。一個積極進取的年輕開發人員應該做什麼?

回答

1

嘗試

PatientList = queryResult.ToList(); 

您版本使用的鑄造,在這種情況下是不可能的,因爲查詢結果是不是列表。 ToList基於它被調用的枚舉構造一個新列表。它確實是這樣的:

public static List<T> ToList<T>(this IEnumerable<T> collection) 
{ 
    return new List<T>(collection); 
} 

您必須確保,很明顯,這PatientList元素SelectListItem類型,並注意Distinct()將返回不同的對象,而與不同領域的項目。也就是說,如果在PatientList中有兩個獨立構造的項目,其中Selected,TextValue屬性相等,但由於調用Distinct(),您仍然有兩個項目。

此外,使用Select(c => c)的原因是什麼?它有效地注意到。

+0

我是Linq noob。我發現這是非常有用的,被說。 當我刪除它,我得到一個編譯器錯誤。 – SoftwareSavant

+0

看起來好像我沒有得到不同的SelectListItems – SoftwareSavant

1

我不知道是什麼類型的項目在你的清單,但你已經張貼你可以將列表

List<int> ages = new List<int> { 21, 46, 46, 55, 17, 21, 55, 55 }; 

    IEnumerable<int> distinctAges = ages.Distinct(); 

添加.ToList()如果你需要將其轉換爲一個列表

上直接調用 Distinct()