質問: MyDataTable.AsEnumerable().AsQueryable().Select("new(Country)"); ``` 現在、国をハードコードしていますが、それでもこのエラーが発生します ``` No property or field 'Country' exists in type 'datarow' ``` 最終的にこのクエリを変更して、動的に列名を取得したいと思います。 助けてください!!!ありがとう。
回答: 重要なヒントはここにあります(太字): > **タイプ** 「データ行」にプロパティまたはフィールド「国」が存在しません > > `DataTable`クラスの拡張メソッド`AsEnumerable`は、 `IEnumerable`返します。Tのタイプは`DataRow`です。ここで、動的LINQの`Select`メソッドは、もちろん**プロパティ** `Country`を持たないこの**タイプの** `DataRow`を処理したいと考えてい**ます** 。 代わりにこれを試すことができます: ``` var qry = MyDataTable.AsEnumerable().AsQueryable() .Select("new(it[\"Country\"] as CountryAlias)"); ``` `it`はタイプ`DataRow`変数を表し、このタイプのメソッドと、おそらく上記の例のインデクサーも使用できます。 (動的LINQは整数インデックスによる配列要素へのアクセスをサポートしていますが、文字列キーでインデクサーにアクセスするかどうかはわかりません。)