2011-08-31 15 views
0

私はLinqを使って選択リスト項目の一意のメンバーだけを取得しています。私はこのリストを返すにはどうすればよい...私が持っているもの は今別個のSelectListItemを取得する

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

は、私は2番目の行にキャストエラーを取得しています。進歩的な若い開発者は何をすべきですか?

答えて

1

は、クエリの結果がリストではありませんよう

PatientList = queryResult.ToList(); 

あなたのバージョンは、このケースでは不可能である鋳物を使用し、試してみてください。 ToListは、それが呼び出される列挙体に基づいて新しいリストを構築します。あなたはPatientList要素がタイプSelectListItemのものであり、Distinct()は異なるフィールドを持つアイテムの異なるオブジェクトを返しますが、ないことに注意していることを、明らかに、確認する必要があります

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

:それはこのような何かを行います。つまり、PatientListに、Selected,TextValueのプロパティを持つ2つの独立して作成されたアイテムがある場合、Distinct()コールの結果として2つのアイテムがあります。

さらに、Select(c => c)を使用する理由は何ですか?それは効果的に指摘しています。

+0

私はLinq noobです。私はそれが非常に有用であることを発見している、と言われている。 削除すると、コンパイラエラーが発生します。 – SoftwareSavant

+0

私はちょうど別個のSelectListItemsを得ていないように見えます – SoftwareSavant

1
私はあなたのリスト内の項目ですが、どのような種類がわからない

あなたが投稿したものを、あなたがリスト

に変換する必要がある場合 .ToList()の追加リスト

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

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

に直接Distinct()を呼び出すことができるため