私はリストに.Where()
メソッドを使用しようとすると、リストは、ジェネリック型である場合、このメソッドが定義されていないようだん:私のプログラムでは。ジェネリック型リストにメソッドが定義されていませんか?
、私はWarning
というクラスがあり、別の中クラス、警告のリストとして定義:
Dim warningList As List(Of Warning)
私は、このリストを操作しよう:
Dim item = warningList.Where(Function(x) x.GetName() = "Foo").FirstOrDefault()
これは完全に正常に動作しますが、私はこのようにそれをしようとすると:
Dim itemList
if(type = "Warning") Then 'Please note that this condition is true...
itemList = warningList
End If
Dim item = itemList.Where(Function(x) x.GetName() = "Foo").FirstOrDefault()
私はその方法.Where()
を述べ、例外を取得は、クラスWarning
のために定義されていませんこれは、なぜ誰も教えてもらえますか? ありがとうございました!
実際のコードではありません。 'warningList'が本当に' List(Of Warning) 'であれば' Enumerable.Where'(LINQがインポートされている場合)を使うことができます。このインスタンスを別の変数(宣言上)に割り当てるという事実は、その変数の型も 'List(Of Warning)'なので何も変更しません。だから 'itemList.Where'もうまくいくはずです。 'Where'で拡張された型は' IEnumerable(Of T) 'であり、' T'は任意の型( 'Object')であってもよいので、'警告 'はそれとは関係ありません。 'List(Of T)'は 'IEnumerable(Of T)'を実装しているので、任意のリスト(または配列)で 'Enumerable.Where'を使うことができます。 –
あなたはそうです、私はちょうどこのコードだけのテストプロジェクトを作成しました。それはうまくいくようですので、私は本当の問題が何であるかを調べます...これを指摘してくれてありがとう! – DrDonut
@TimSchmelter:今、私の質問に適応しました。それは違いを生む 'If'ステートメントのようですか?今私のテストプロジェクトで同じ動作をしています... – DrDonut