2013-05-06 39 views
2

特定列的所有行我有一個數據集,看起來像這樣:在數據集中

| A | B | C | D | E | F | G | H | I | ... | Z | 
-------------------------------------------------- 
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | ... | 26 | 
|11 |22 |33 |44 |55 |66 |77 |88 |99 | ... | 2626 | 
|111|222|333|444|555|666|777|888|999| ... |262626| 

價值不相關。我只有列很多

我想經過特定列的所有行
是否有可能不去所有列?因爲現在我能想到的唯一的事情是這樣的(比方說我要爲列d所有行)

C#

foreach(DataRow row in myDataSet.Tables(0).Rows) 
    if(row.Column == myDataSet.Tables(0).Columns("D")) 
     MessageBox.Show("I'm in Column B"); 

VB

For Each row As DataRow In myDataSet.Tables(0).Rows 
If row.Column Is myDataSet.Tables(0).Columns("D") Then 
MessageBox.Show("I'm in Column B") 
End If 
Next 

但這將通過所有列循環。我想使用像
myDataSet.Tables(0).Columns("D").Rows集合,但它不存在。

回答

4

DataRowindexer,您可以使用:

foreach(DataRow row in myDataSet.Tables[0].Rows) 
    Console.WriteLine("I'm in Column B: " + row["D"]); 

您可以通過name或領域的ordinal-index訪問它。如果您有DataColumn的引用,則可以使用third overload,並且在找到該列後,其他人使用該引用。如果你不想「搜索」的列(儘管這種努力是可以忽略不計),使用此:

DataColumn col = myDataSet.Tables[0].Columns["D"]; 
foreach(DataRow row in myDataSet.Tables[0].Rows) 
     Console.WriteLine("I'm in Column B: " + row[col]); 

但是,如果你要總結在此列的所有值,你也可以使用LINQ的,例如:

int dTotal = myDataSet.Tables[0].AsEnumerable().Sum(r => r.Field<int>("D")); 
+0

感謝蒂姆。但是,這仍然會在我的數據庫中執行**所有行**,看看它是否屬於「B列」。所以性能是一樣的。除非我錯了。 – phadaphunk 2013-05-06 14:14:47

+0

另外我知道這種方法,但不幸的是LINQ不是和在這裏選擇。 (Vb.Net 2.0的工作環境):-(! – phadaphunk 2013-05-06 14:17:36

+0

@PhaDaPhunk:編輯我的答案。 – 2013-05-06 14:21:56

2

在immaginary網格,垂直滾動行和水平訪問列

foreach(DataRow row in myDataSet.Tables(0).Rows) 
{ 
    // At this point the row iterator point to a row 
    // where all the values in the schema columns are available 
    // Indexing with the column name will result in related value 
    MessageBox.Show(row["D"].ToString(); 
} 
+0

這是作爲我的第一種方法conistuming資源,因爲它仍然必須檢查* *所有行**以查看它是否符合'row [「D」]'條件? – phadaphunk 2013-05-06 14:16:31

+0

您的標準是什麼?獲得最佳性能可以修改從數據庫返回值的查詢,但您可以使用DataTable.Select方法只提取所需的行 – Steve 2013-05-06 14:17:48

+0

我忘記了我的問題沒有上下文,在列中有一個字段被''分成兩種語言,所以我想測試它是法語的還是法語的在一個完美的設計中,我想這應該在我的查詢中完成嗎? – phadaphunk 2013-05-06 14:20:21