我有2个对象,dataset.datatable
和sortedDictionary
。我的dataset.datatable
中有多达数百万条记录,我需要检查sortedDictionary
中dataset.datatable
中的每个号码是否都存在于foreach (var item in UpdatePhones)
{
//Run through every record
for (var i = 0; i < objDataSet.Tables[0].Rows.Count; i++)
{
//Check if exists
if (Convert.ToString(objDataSet.Tables[0].Rows[i][0]) == item.Key)
{
//If so, update second column value
objDataSet.Tables[0].Rows[i][1] = item.Value;
}
}
}
中,如果有,我必须更新row的第二列值(它是一个布尔值)。
dataset.datatable
我的方法需要1个多小时来更新1,000,000行 foreach (var item in UpdatePhones)
{
DataRow[] row = objDataSet.Tables[0].Select("Number = " + item.Key);
hrow[0][1] = item.Value;
}
中的3000个项目。有更快的方法吗?
编辑:我找到了一个非常简单的解决方案,让我觉得它有两种方式:S&lt;
func didBeginContact(contact: SKPhysicsContact)
答案 0 :(得分:0)
您需要提供正确的列名才能生效。
List<DataRow> rows = objDataSet.Tables[0].Rows.Cast<DataRow>().ToList();
var query = from row in rows.AsParallel()
where UpdatePhones.Contains(Convert.ToString(row.Field<string>("Phone")))
select row;
query.ForAll((r) => UpdateThePhone(r));
void UpdateThePhone(DataRow row)
{
row.SetField("YourBooleanColumn", true);
}
我不得不做一些猜测,比如假设当值在字典和表中时,你将第二列设置为true。当字典中没有字符串时,您提供的代码也不会将该值设置为false。