DBから、SELECTした結果のものが変数Zに格納されております。
そして、この変数Zをブレークポイントを使用して中身をvisualstudioC#で
確認すると以下のような構造をしております。
z|Cont=9
[0] |Count=3 //zにカーソルを合わせた結果
[1] |Count=3
[2] |Count=3
[3] |Count=3
[4] |Count=3
[5] |Count=3
[6] |Count=3
[7] |Count=3
[8] |Count=3
[0] |{[NO1,AAA]} //[0]にカーソルを合わせた結果 [1] |{[NO2,DDD]} [2] |{[NUM,500]}
DB(Table)は下記のようなイメージです。
NO1,NO2,NUM
AAA,DDD,500
AAA,EEE,600
AAA,FFF,400
BBB,GGG,200
BBB,HHH,300
BBB,III,900
CCC,JJJ,700
CCC,KKK,500
CCC,LLL,900
DBから9行分のデータをSELECTしてます。列名(項目)はNO1,NO2,NUMの三つです。
NO1とNO2は、UNIQとなっております。(他の行との重複はない)
また、DBから取得した変数の型はXMLManagerです。XMLManager xmlのようにxmlという変数を定義します。 ただ、その後、z = new List<DICTIONARY>();とした変数zを生成し、 z = xml.dataRows;で代入しております。
ここからが本題なのですが、
① NO1がAAAとなるものをLINQを使用して瞬時に抽出する方法を教えてください。
② ①で取得したものをList<DICTIONARY>()型の変数に代入する方法を教えてください。
①について、上記テーブルで言いますと、
AAA,DDD,500
AAA,EEE,600
AAA,FFF,400
を指します。
近い方法として、NO1がAAA,NO2がEEEのときのNUM(600)を変数xに格納するときのやり方は下記の通りでうまくいきました。
var getItem = z.Where((item) => item["NO1"] == "AAA" && item["NO2"] == "EEE").FirstOrDefault();
string x = getItem["NUM"];
上記を応用すればいいと思うのですが、いまいち分かりません。
②について、①で取得した
AAA,DDD,500
AAA,EEE,600
AAA,FFF,400
を下記のlistという変数に代入することを目的とします。
List<DICTIONARY> list = new List<DICTIONARY>();
その後、
foreach (DICTIONARY d in list){
string no1 = d["NO1"]; string no2 = d["NO2"]; string num = d["NUM"];
}
のようにして1レコードづつforeachを使って処理をしたいです。
恐れ入りますが、ご回答の程、お願い致します。
回答1件
あなたの回答
tips
プレビュー