È possibile utilizzare LINQ to DataSets per fare questo:
Assert.IsTrue(dataSet.Tables[0].AsEnumerable().Where(
r => ((string) r["Col1"]) == "MyValue").Count() == 1);
nota, è anche possibile fare questo senza la chiamata di affermare:
dataSet.Tables[0].AsEnumerable().Where(
r => ((string) r["Col1"]) == "MyValue").Single();
Se il numero di righe non è uguale uno (quindi, la chiamata a "Single"), quindi verrà generata un'eccezione e quell'eccezione non gestita dovrebbe fallire il test case. Personalmente, mi piace quest'ultimo, in quanto ha un significato semantico più chiaro.
È possibile che questo può essere ulteriormente ridotto a:
dataSet.Tables[0].AsEnumerable().Single(
r => ((string) r["Col1"]) == "MyValue");
Inoltre, è possibile sfruttare la Field
method sul DataRowExtensions
class per semplificare l'accesso type-safe per il campo (oltre a fornire il vantaggio supplementare di conversione DBNull
su null controparti in .NET):
dataSet.Tables[0].AsEnumerable().Single(
r => r.Field<string>("Col1") == "MyValue");
Vuoi tornare le righe corrispondenti, o semplicemente ottenere un conteggio di quanti ci sono? –