C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 66 を表示中)
■38222 / )  Re[1]: 匿名型のエラーについて
□投稿者/ biac (142回)-(2009/07/09(Thu) 11:24:18)
biac さんの Web サイト
> ※SliverLightでLinqを試そうと、以下のチュートリアル2(データバインディング)をVBで試そうとしたところ、本件でエラーとなりました。

ん?
そのチュートリアルの中には、 GetUserMst() だとか From a In db.UserMst Select a.ID, a.Name だとか見当たらないようですが?


> --------- エラーメッセージ ---------------
> 'System.Collections.Generic.List(Of <匿名型>)' の値を 'System.Collections.Generic.List(Of SilverlightApplication1.Web.UserMst)' に変換できません。

どこでそのエラーになってます?

>  Return qr.ToList

ここ↑ですか? ( だと思う。 もっと言うと、 ToList() は成功していて、 Return するところでは? )

>  Dim qr = From a In db.UserMst
> Select a.ID, a.Name

Select してますから…
qr は、 UserMst 型の持っているプロパティ ID と Name だけを取り出して、 それらから新しいオブジェクトを作ったもの (匿名型) の集合 (みたいなもの) ですからね。

それを ToList() したものは、 プロパティ ID と Name だけを持っている匿名型のオブジェクトの List ですから、 メソッドの返値として宣言してある型 As List(Of UserMst) とは違うので、 エラーになりますね。

対処は、 クエリ式を変えるか、 プロパティ ID と Name だけを持っている型を定義して使うか、 型が合うようにデータを詰め替えるか (でも、それは意味が無いと思う) の、 いずれかでしょう。

返信 編集キー/


管理者用

- Child Tree -