В основному у мене є DataTable
з рядками, що містять номери деталей, і кількома стовпцями, що містять інформацію про ці частини.
Для порівняння цих даних з даними, які ми маємо в базі даних, я визначив, що у мене є один із двох варіантів.
Варіант 1 - Прокрутіть кожен рядок та ВІДБЕРІТЬ дані
void CompareData(DataTable dt) {
foreach (DataRow entry in dt.Rows) {
//select that row
DataRow dbEntry = ExecuteQuery("SELECT * FROM Parts WHERE partno="" + entry["partno"] + """).Rows[0];
if (dbEntry["info1"] == entry["info1"]) {
//do something
} else {
//do something
}
}
}
Варіант 2 - ВИБЕРІТЬ усі дані одночасно і порівняти за допомогою циклів
void CompareData(DataTable dt, string[] parts) {
DataTable dbEntries = ExecuteQuery("SELECT * FROM Parts WHERE partno IN("" + String.Join(parts, "","") + "")");
foreach (DataRow entry in dt.Rows) {
foreach (DataRow dbEntry in dt.Rows) {
if (dbEntry["partno"] == entry["partno"]) {
if (dbEntry["info1"] == entry["info1"]) {
//do something
} else {
//do something
}
}
}
}
}
Вони обидва здаються досить неефективними, тому я "не дуже впевнений, що робити. Чи пришвидшив би LINQ цей процес? Я ніколи не користувався ним, але просто перегляд навколо цього виглядає як щось, що може допомогти.
Відповіді:
4 для відповіді № 1Здійснюйте якомога менше дзвінків до БД. Ви будете ефективнішими в 99,9% випадків. (Загальне правило кодування)