C# Jak wyszukać wiersz w DataTable

2-Mar-2011

Zakładam, że DataTable jest elementem większego DataSeta.

Aby odnaleźć DataRow w DataTable można użyć 2 metod:

  • Szukanie po kluczu głównym
  • Szukanie po wartościach w DataTable

W tym pierwszym przykładzie DataSet zawiera już metodę dla każdej tabeli o nazwie FindBy… i tutaj nazwa kolumn klucza podstawowego. Np zakładając że mam tabelę Skladniki z kluczem podstawowym na KodSkladnika, to wyszukiwanie po luczu podstawowym może wyglądać tak:

DataSet1.SkladnikiRow skladnikRow = DataSet1.Skladniki.FindByKodSkladnika("A01");

Gdyby jednak wyszukiwanie miało odnaleźć rekord na podstawie danych w innych kolumnach to pomocna może być metoda Select

DataSet1.SkladnikiRow[] skladnikiRows;
skladnikiRows = dataSet1.Skladniki.Select("Nazwa Like 'Podatek%' and typ='US'");

Zauważ, że pierwsza metoda zwróci co najwyżej jeden rekord, bo przecież szukasz po kluczu podstawowym, tymczasem druga metoda może zwrócić więcej rekordów. Oczywiście, jeżeli jesteś pewien, że będzie zwrócony tylko jeden rekord, to możesz się do niego odwołać pisząc:

skladnikiRows[0]

Uwaga, nigdy nie rób tego bezwarunkowo, zawsze najpierw sprawdź, czy Select nie zwrócił null!

Więcej informacji pod adresem: http://msdn.microsoft.com/en-us/library/y06xa2h1(v=vs.80).aspx

Dodaj komentarz:

Autor: Rafał Kraik