0

データセットを入力してデータテーブルを取得する Northwind Customers テーブルを使用しています。

動的 linq を使用しようとしていて、columnName を動的に選択したい

var qry = MyDataTable.AsEnumerable().AsQueryable().Select("new(Country)");

現在、国をハードコーディングしていますが、それでもこのエラーが発生します

No property or field 'Country' exists in type 'datarow'

最終的にこのクエリを変更して、列名を動的に取得したいと思います。

助けてください!!!ありがとう。

4

1 に答える 1

4

重要なヒントは次のとおりです (太字)。

タイプ'datarow'にプロパティまたはフィールド 'Country' が存在しません

クラスの拡張メソッドAsEnumerableは、T が型を持つ を返します。ここで、Dynamic LINQ のメソッドは、もちろんプロパティを持たないこの型で動作する必要があります。DataTableIEnumerable<T>DataRowSelect DataRow Country

代わりにこれを試すことができます:

var qry = MyDataTable.AsEnumerable().AsQueryable()
    .Select("new(it[\"Country\"] as CountryAlias)");

it型の変数を表すようにDataRowなり、この型のメソッドと、おそらく上記の例のインデクサーも使用できます。(動的 LINQ は、整数インデックスによる配列要素へのアクセスをサポートしていますが、文字列キーを使用したインデクサーへのアクセスが機能するかどうかはわかりません。)

于 2011-04-13T16:30:05.120 に答える