1

関数の1つに次のコードがあります

goodsQuery = db.Goods.Select(g => new { g.name, g.description, g.image, g.price });

メソッド内で定義されている場合は、var型を使用します。しかし、変数がクラス フィールドとして定義されている場合、どの型を使用する必要がありますか?

もちろんIEnumerable<Goods>うまくいきません。使用してみましIEnumerable<object>たが、結果は同じです。

このために新しいクラスを作成する必要がありますか?

4

2 に答える 2

4

匿名型を使用しています。これは、関数のスコープ内にのみ存在できます。結果をプロパティで使用できるようにする場合は、そのための実際のクラスを作成する必要があります。

フィールド、プロパティ、イベント、またはメソッドの戻り値の型を匿名型として宣言することはできません。同様に、メソッド、プロパティ、コンストラクター、またはインデクサーの仮パラメーターを匿名型として宣言することはできません。匿名型、または匿名型を含むコレクションを引数としてメソッドに渡すには、パラメーターを型オブジェクトとして宣言します。ただし、これを行うと、厳密な型指定の目的が無効になります。クエリ結果を格納するか、メソッド境界の外に渡す必要がある場合は、匿名型ではなく、通常の名前付き構造体またはクラスを使用することを検討してください。

于 2013-01-08T13:58:35.027 に答える
1

C# 4 を使用しているdynamic場合は、クラスを作成できない場合にも使用できます...

しかし、ここでは class Good(奇妙な名前) の方が良い選択肢のようです。

于 2013-01-08T14:01:13.780 に答える