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

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

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

Re[2]: 匿名型のエラーについて


(過去ログ 66 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■38219 / inTopicNo.1)  匿名型のエラーについて
  
□投稿者/ Jillka (1回)-(2009/07/09(Thu) 10:31:22)

分類:[VB.NET/VB2005 以降] 

開発環境:VS2010
使用言語:VB
VS2010にてLinqを試そうとしたところ、以下のエラーが解決できませんので、質問させて頂きました。
※SliverLightでLinqを試そうと、以下のチュートリアル2(データバインディング)をVBで試そうとしたところ、本件でエラーとなりました。
http://silverlight.net/internationallearn/default.aspx

Public Function GetUserMst() As List(Of UserMst)
 Dim db As New DataClasses1DataContext
 Dim qr = From a In db.UserMst
Select a.ID, a.Name
 Return qr.ToList
End Function
--------- エラーメッセージ ---------------
'System.Collections.Generic.List(Of <匿名型>)' の値を 'System.Collections.Generic.List(Of SilverlightApplication1.Web.UserMst)' に変換できません。

いろいろ試して、qrの変数を
Dim qr As System.Linq.IQueryable(Of UserMst)
で宣言すれば、コンパイルは通ります。
しかし、実際に動かすとエラーが発生します。

わかる方ご教授下さい。お願い致します。
引用返信 編集キー/
■38222 / inTopicNo.2)  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 だけを持っている型を定義して使うか、 型が合うようにデータを詰め替えるか (でも、それは意味が無いと思う) の、 いずれかでしょう。

引用返信 編集キー/
■38223 / inTopicNo.3)  Re[2]: 匿名型のエラーについて
□投稿者/ Jillka (3回)-(2009/07/09(Thu) 11:46:49)
biac さん
ご返事ありがとうございます。

チュートリアルに記載のテーブル名は変更していました。(説明不足でした)
ご指摘通り、クエリ式を変更したところ、エラーも無くなり、正常に動きました。

ありがとうございました。

No38222 (biac さん) に返信
>>※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 だけを持っている型を定義して使うか、 型が合うようにデータを詰め替えるか (でも、それは意味が無いと思う) の、 いずれかでしょう。
>
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -