2017-09-26 190 views
1

我有一個DataTable的列名稱「零件號」和各種其他列。我想抓取「零件號」欄中的所有元素。此列有時可能位於不同的位置,因此我不能只分配特定的項目數組索引。我想用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 parts = rows.Select(r => string.IsNullOrWhiteSpace(r [「Parts」])?string.Empty:r [「Parts」]);' – Muckeypuck

回答

1

您可以索引DataColumnCollectionDataColumn,像這樣:

// 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]; 

DataTable擔心找不到ItemArray內的索引。所有你必須知道的是列名。請參閱documentation