Вы можете использовать LINQ to DataSets , чтобы сделать это:
Assert.IsTrue(dataSet.Tables[0].AsEnumerable().Where(
r => ((string) r["Col1"]) == "MyValue").Count() == 1);
Обратите внимание, вы также можете сделать это без вызова Assert:
dataSet.Tables[0].AsEnumerable().Where(
r => ((string) r["Col1"]) == "MyValue").Single();
Если число строк не равно одной (следовательно, вызов Single
), то будет выдано исключение, и это необработанное исключение должно провалиться в вашем тестовом примере. Лично мне нравится последнее, поскольку оно имеет более четкое семантическое значение.
Выше может быть дополнительно сокращено до:
dataSet.Tables[0].AsEnumerable().Single(
r => ((string) r["Col1"]) == "MyValue");
Кроме того, вы можете воспользоваться Field
методом в DataRowExtensions
классе , чтобы упростить безопасный для типов доступ к полю (а также предоставить дополнительные преимущества преобразования DBNull
в нулевые аналоги в .NET):
dataSet.Tables[0].AsEnumerable().Single(
r => r.Field<string>("Col1") == "MyValue");