2017-09-26 22 views
1

列名「部品番号」とその他のさまざまな列を持つDataTableがあります。私は列 "部品番号"にあるすべての要素をつかみたい。この列は別の位置にあることがありますので、特定のItem Arrayインデックスを割り当てることはできません。 LINQを使ってそれをやりたいデータテーブルのすべての行要素を列LINQから取得するC#

今は、最初の列のすべてを取得しています。しかし、私はこれを設定して、列の見出しに従ってデータを取得します。

var parts = from row in dataTable.AsEnumerable() 
      where true != string.IsNullOrWhiteSpace((row.ItemArray[0] == DBNull.Value) 
       ? string.Empty 
       : row.ItemArray[0].ToString()) 
      select row.ItemArray[0]; 
+0

私の頭の上から正確な構文がわかりませんが、何かが好きです: 'var rows = datatable.rows.AsEnumerable(); var part = rows.Select(r => string.IsNullOrWhiteSpace(r ["Parts"])?string.Empty:r ["Parts"]); ' – Muckeypuck

答えて

1

あなたは、このようなインデックスDataColumnによってDataColumnCollection、することができます

// Find the DataColumn by column name 
string columnName = "Part Number"; 
DataColumn partNumber = dataTable.Columns[columnName]; 

var parts = from row in dataTable.AsEnumerable() 
      where !string.IsNullOrWhiteSpace(row[partNumber].ToString()) 
      select row[partNumber]; 

ItemArray内のインデックスを見つけることについてDataTable心配をしてみましょう。あなたが知る必要があるのは列名だけです。

詳細については、documentationを参照してください。

関連する問題