我有一個包含一個DataTable的數據集,該表有3列(Column1,Data,Column2)&多個數據行。查找和替換DataColumn中的值的有效方法
我也有一個字典,其中包含我需要在DataColumn中搜索的值列表以及用於替換原始值的值。
我想在名稱爲'Data'的列中進行搜索。
下面的圖片包含原始數據表格以及由此產生的DataTable以及包含需要搜索和替換的鍵和值的字典。
什麼是執行此操作的最有效方法是什麼?
我有一個包含一個DataTable的數據集,該表有3列(Column1,Data,Column2)&多個數據行。查找和替換DataColumn中的值的有效方法
我也有一個字典,其中包含我需要在DataColumn中搜索的值列表以及用於替換原始值的值。
我想在名稱爲'Data'的列中進行搜索。
下面的圖片包含原始數據表格以及由此產生的DataTable以及包含需要搜索和替換的鍵和值的字典。
什麼是執行此操作的最有效方法是什麼?
轉到爲簡單起見
foreach (DataRow row in dataSet.Tables[0].AsEnumerable())
{
string data = row.Field<string>("Data");
string newData = null;
if (dict.TryGetValue(data, out newData))
{
row.SetField("Data", newData);
}
}
(你需要添加System.Data.DataSetExtensions到項目的引用)
我會處理這樣的:
DataSet ds = new DataSet();
string strNewXmls = ds.GetXml().Replace("AAA", "A++");
System.IO.StringReader srXmlStringReader = new System.IO.StringReader(strNewXmls);
ds.ReadXml(srXmlStringReader, XmlReadMode.IgnoreSchema);
這是一個快速和解決方案簡單您可以使用整個DataSet中的各種東西來完成此操作。
希望它能幫助,
Taragneti
我相信有這樣做使用LINQ最好的方式,但是這會做
Dictionary<string,string> dic = new Dictionary<string,string>();
dic.Add("AAA", "A++");
dic.Add("BBB", "B++");
foreach(KeyValuePair<string, string> kvp in dic)
{
DataRow[] sl = dt.Select("DATA='" + kvp.Key + "'");
foreach(DataRow r in sl)
r["DATA"] = kvp.Value;
}
內foreach循環可以被替代表達式
sl.ToList().ForEach(x => x.SetField<string>("DATA", kvp.Value));
但我沒有測試過性能
對於大型數據集可能效率不高,但應該考慮的一點是在字典Keys上循環,而不是在表的單個行上循環。
在T-SQL中我會想到嗎? – BIDeveloper
你到現在爲止嘗試過什麼? –
我正在執行MDX查詢並獲取數據。所以我必須使用C#修改數據。我知道我檢查列名是否是「數據」,然後我可以遍歷行,然後找到並替換值。我不想去那笏 – SharpCoder