このエラーに関するその他のスレッドがあり、エラーの意味を知っています。しかし、私は自分のケースで修正コードがどこにあるのかわかりません。タイプ 'WhereSelectEnumerableIterator'2のオブジェクトをPerson(VB.Net)にキャストすることができません
APIからIEnumerable(Of Person)
を返す必要があります。以前私はFor Each
ループを使用しましたが、同じ結果を達成するために(あまり)少ないコードを使用して調査していました。私はあまりにも遠くshortcuttedてきたかどうかわからないんだけど、ここで(おそらく1行の涅槃を望んで...)
Public Function [Get]() As IEnumerable(Of Person)
Using dt As DataTable = LoadDataTable()
Return New List(Of Person)() From {
From dr In dt.Rows Select New Person() With {
.FirstName = dr.Item("FirstName").ToString(),
.Surname = dr.Item("Surname").ToString()
}
}
End Using
End Function
エラーは次のとおりです。
タイプ のオブジェクトをキャストすることができません「WhereSelectEnumerableIterator`2 [System.Objectの、MyApp.Models.Person]」 のタイプに「MyApp.Models.Person」
私は別の場所で.ToList()
拡張メソッドを置くことで推測が、それを得ることができません右。誰もがこれが一回の操作で可能であるかどうかをアドバイスすることができますか、または選択肢がなく、New List
という変数を宣言している場合は教えてください。
'New List ... From'を返すのではなく、' From ... Select'の周りに括弧を置き、 'ToList'を実行するとどうなりますか?代わりに、新しいリストで 'From'を使うのではなく、' From ... Select'をctorの引数として使うとどうなりますか? VBのように、リストの後に中かっこの中にある1つまたは複数のPersonオブジェクトが予想されていて、その代わりに列挙可能なものが得られているようです。 – Craig