3

私はこのようなものを持っている場合

 var result = db.Database.SqlQuery<object>("SELECT GroupID, GoupName, GroupValue FROM Group").ToList();

ご覧のとおり、バインドできる特定のクラスがないため、オブジェクトを使用します。

結果から列の情報と値を取得する方法はありますか?

Reflection を使用してみましたが、うまくいきませんでした

 Type type = result.GetType();
 FieldInfo[] fields = type.GetFields();
 foreach (var field in fields) // Loop through fields
 {
     string name = field.Name;
 }

それを行う方法はありますか ありがとう

4

1 に答える 1

2

それを行う方法があるようには見えません-1つのことは、あなたresultは単一のオブジェクトではなく、InternalSqlNonSetQueryオブジェクトのコレクションを含む です。あなたの場合、ジェネリック パラメータはobjectであるため、パラメータのない完全に空System.Objectのオブジェクトが得られます。

私はうまくいくことを望んDictionary<string, object>でいましたが、そのような運はありませんでした。

コードで型を定義していなくても、フィールド名と型が事前にわかっている場合は、ここにある手法を使用して実行時に型を定義できますが、それは探しているものではない可能性があります。(このリンクが機能しなくなった場合、基本的には、Reflection Emit を使用してまったく新しいタイプを構築し、それを結果のタイプとして使用しますが、それは取るに足らない量のコードではありません)。

于 2013-08-30T23:41:59.757 に答える