Как увеличить скорость выполнения времени?
for (int i = 0; i < ds.Tables[s].Rows.Count; i++) { for (int j = 0; j < ds.Tables[s].Columns.Count; j++) { if (ds.Tables[s].Rows[i][j].ToString().ToUpper().Trim().Contains("NO OF UNITS")) { int t = j + 1; if (ds.Tables[s].Rows[i][t].ToString() == "") { dt.Rows.Add(); dt.Rows[mn][0] = "Parts Per uint Should be mandatory"; mn = mn + 1; } } } }
В приведенном выше коде я буду использовать функцию "Contains" для проверки таблицы данных.проблема в том, что процесс выполнения этого метода очень медленный.как это исправить.
Примечание:
В этой таблице есть несколько строк и столбцов.и заголовок (заголовок или описание типа " номер товара")
Положение заголовков строк и столбцов не фиксировано, оно изменяется в зависимости от листа, поэтому только я использовал функцию "содержит". более 10 циклов для этой проверки.так что процесс идет очень медленно.
Как это исправить.
Что я уже пробовал:
for (int i = 0; i < ds.Tables[s].Rows.Count; i++) { for (int j = 0; j < ds.Tables[s].Columns.Count; j++) { if (ds.Tables[s].Rows[i][j].ToString().ToUpper().Trim().Contains("NO OF UNITS")) { int t = j + 1; if (ds.Tables[s].Rows[i][t].ToString() == "") { dt.Rows.Add(); dt.Rows[mn][0] = "Parts Per uint Should be mandatory"; mn = mn + 1; } } } }
Я использовал этот код.
Andy Lanng
Вы слышали о linq? Это могло бы, по крайней мере, упростить код, в лучшем случае улучшить время выполнения
Raja Ganapathy
Как это сделать, сэр.
F-ES Sitecore
Linq не улучшает производительность, во всяком случае, он будет замедлять ее еще больше. Linq - это удобство, а не скорость.
F-ES Sitecore
Первое, что я бы попробовал, - это избавиться от ToUpper, ToString и Trim и использовать нечувствительный к регистру IndexOf, а не Contains
http://stackoverflow.com/questions/444798/case-insensitive-containsstring
культура.CompareInfo.IndexOf ((string) ds.Таблицы[s]. строки[i][j], "нет единиц измерения", CompareOptions.Параметром ignorecase) != -1
Непроверенный, но что-то вроде этого
Raja Ganapathy
Спасибо вам всем!