0

動的LINQライブラリコードサンプルを使用して、いくつかのデータを動的に返しています。返される列の数は、ユーザー入力によって異なります。IQueryableをIListに列挙しています。

私がする必要があるのは、一度に1つのフィールドでIlistをステップスルーすることです。IListの行を反復処理することで、一度に1つの行を取得できますが、コレクションから1つのフィールドを引き出すことはできません。

たとえば、ここでは2つの列を返します(テスト用にハードコーディングされていますが、製品では、ユーザーが選択したフィールドに応じて可変になります)。

Dim Dynq = dc.dt _
                    .Where("RUN_ID = """ & runNumber & """ and Upper_Pressure > 95") _
                    .OrderBy("Upper_Pressure") _
                    .Select(" new (Run_ID,Process)")

        Dim something = DirectCast(Activator.CreateInstance(GetType(List(Of )).MakeGenericType(Dynq.ElementType), Dynq), IList)

これで、次のような列名がわかっている場合、Ilistからフィールドを引き出すことができます。

something.Run_ID.ToString

しかし、実行時まで使用している列がわからず、実行時に設定された変数に動的に挿入しても機能しません。

要約すると、私はこのようなIlistを持っています

1  |  Auto
2  |  Auto
3  |  Manual
4  |  Manual

そして、1を返し、次にAutoを返し、次に2などを返す方法が欲しいのですが...

私よりも学んだ人たちの助けをいただければ幸いです。

4

1 に答える 1

0

あなたの質問は少し紛らわしいですが、戻り値セットを平坦化し、特定の列を要素として列ごと、次に行ごとに返すようにしたいと思います...

使用できる 1 つの方法は、SelectMany演算子です。

例 (C# で申し訳ありませんが、私の脳はワントラックになっています!):

// Find flattened list of some explicitly specified property values...
var flattened = something.SelectMany(e => new [] { e.Run_ID.ToString(), e.Process.ToString() });

それがあなたのその後かどうかはわかりませんが、正しい方向への一歩になる可能性があります.

于 2011-02-09T00:11:44.513 に答える