2009-02-10 2 views
0

Я использую C# 2.0, и я не могу помочь, но думаю, что это не самый эффективный способ поиска в коллекции (в данном случае DataTable) для значения:Рефакторинг мой DataTable код поиска

bool found = false; 
foreach (DataRow row in data.Rows) 
{ 
    if (id == row["rowID"]) 
    { 
     found = true; 
     break; 
    } 
} 
if (!found) 
{ 
    //Do stuff here 
} 

Может ли кто-нибудь подумать о «чистом» способе сделать это?

ответ

1

Это линейный поиск, и это самый медленный фактический поиск есть.

Один из альтернативных вариантов, если вы хотите продолжать использовать DataTable, чтобы определить первичный ключ и использовать Find() метод:

myTable.PrimaryKey = new DataColumn[] { new DataColumn("rowID") }; 
DataRow row = myTable.Find(id); 
Смежные вопросы