2016-10-28 5 views
0

VS 2013(VB)とSQL Server 2016を使用するLinQ SQLクエリのデータを操作する

データベースから2列を返すlinQクエリがあります。クエリは次のとおりです。

 Dim val = (From value In db.ngc_flowTypes 
       Where value.defaultValue IsNot Nothing 
       Select value.flowName, value.defaultValue) 

返されるデータは以下のとおりです。

result set from sql table

Iは、結果の各行を反復し、特定の変数に値を渡したいです。 ForEachステートメントは、一度実行されるだけで動作しないようです。私はこれが簡単でなければならないと確信していますが、私はそれをかなり理解していません。データを最良の方法で返信していますか? VBのデータテーブルにデータを転記できますか?私はそれをより簡単に扱うことができますか?

私が望む最終結果は、各フロー名に対応するデフォルト値(他のテキストとともに)の文字列です。そうですね。

dim strsubmission as string = flowName + " has a value of " + defaultValue 
+0

_ flowNameは、テーブル内で一意である限り動作します_何「それは一度だけ通るようforeachステートメントdoesntのが動作するように見えますか。」?何度繰り返したいのですか? 'ForEach'を使う試みはどこにありますか? – JLRishe

+0

4つの結果が返ってきたので、4回実行すると仮定します。例えばvalの各結果に対して次のようにする – Silentbob

+1

'' select flowName + "は" + defaultValue "という値を持っていますか? – dasblinkenlight

答えて

1

ToDictionaryを使用してください。

Dim val = (From value In db.ngc_flowTypes 
      Where value.defaultValue IsNot Nothing 
      Select value).ToDictionary(Function(key) key.flowName, 
             Function(value) value.defaultValue) 

これは実際には、データベース(約Select * From ngc_flowTypes Where defaultValue Is Not NULL)にLINQのSQLを実行するキー/値ペア(flowNamedefaultValue)に、各レコードを横断して(メモリ内の辞書の変数に入れますval)。

その後、辞書で好きなことをすることができます。

For Each flowName In val.Keys 
     Console.WriteLine("{0} has a value of {1}", flowName, val(flowName)) 
Next 

編集: これだけngc_flowTypes