簡體   English   中英

如何在數據表中獲取索引

[英]How to get Index in Datatable

我在這里需要一些幫助,例如我的數據表中有以下項目

第 1 欄 第 2 欄 第 3 欄 第 4 欄 第 5 欄 第 6 欄
行X 1 12 0
行X 2 12 0
行X 3 12 0
行Y 3 12 1
行Y 1 12 1

我想得到這一行的索引

行X | 3 | 12 | 0 | |

因為我想更新這一行的第 5 列和第 6 列。 如果我使用上面的查詢

var index = from row in DataTable1.AsEnumerable()
let r = row.Field<string>("Column1")
let s = row.Field<int>("Column2")
let t = row.Field<string>("Column3")
let u = row.Field<string>("Column4")
where r == DataRowX && s == 12 && t == 3 && u == 0
select DataTable1.Rows.IndexOf(row);

DataTable1.Rows[index]["Column5"] = intUpdateValueColumnx;
DataTable1.Rows[index]["Column6"] = intUpdateValueColumny;
DataTable1.AcceptChanges();

這不起作用,因為參數 1:無法從“System.Data.EnumerableRowCollection”轉換為“int”。 如何獲取索引?

有沒有另一種方法來實現這一目標?

index應該是一個int ,表示要更改的行的位置或“索引”。

您正在使用第一行將index設置為EnumerableRowCollection

var index = from row in DataTable1.AsEnumerable()
let r = row.Field<string>("Column1")
let s = row.Field<int>("Column2")
let t = row.Field<string>("Column3")
let u = row.Field<string>("Column4")
where r == DataRowX && s == 12 && t == 3 && u == 0
select DataTable1.Rows.IndexOf(row);

所以index實際上是一組索引。


你可能想做類似的事情,

foreach (var row in DataTable1.AsEnumerable().Where(r =>
        r.Field<string>("Column1") == DataRowX &&
        r.Field<int>("Column2") == 12 &&
        r.Field<string>("Column3") == "3" &&
        r.Field<string>("Column4") == "0"))
{
    row.SetField("Column5", intUpdateValueColumnx);
    row.SetField("Column6", intUpdateValueColumny);
}

DataTable1.AcceptChanges();

這將更新與您的條件匹配的所有行。 可能有很多,也可能沒有。

Enumerable.Where返回多個元素,在這種情況下IEnumerable<int> ,您可以使用foreach枚舉所有元素:

foreach(int index in indices) // renamed index to indices
{
    DataTable1.Rows[index]["Column5"] = intUpdateValueColumnx;
    DataTable1.Rows[index]["Column6"] = intUpdateValueColumny;
}
DataTable1.AcceptChanges();

如果您確定它只包含一個,您可以使用FirstSingle (對多個拋出異常)。

int firstIndex = indices.First();
DataTable1.Rows[firstIndex]["Column5"] = intUpdateValueColumnx;
// ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM