Как я могу искать строки в datatable для строки с Col1 = "MyValue"
Я думаю что-то вроде
Assert.IsTrue(dataSet.Tables[0].Rows.
FindAll(x => x.Col1 == "MyValue" ).Count == 1);
Но, конечно, это не работает!
Как я могу искать строки в datatable для строки с Col1 = "MyValue"
Я думаю что-то вроде
Assert.IsTrue(dataSet.Tables[0].Rows.
FindAll(x => x.Col1 == "MyValue" ).Count == 1);
Но, конечно, это не работает!
Вы можете использовать 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
class, чтобы упростить доступ к полю в виде типа (а также предоставить дополнительную выгоду от преобразования DBNull
для нуль-копий в .NET):
dataSet.Tables[0].AsEnumerable().Single(
r => r.Field<string>("Col1") == "MyValue");
Вы можете попробовать следующее:
var b=datatable.AsEnumerable.where(p=> p.Field<string>
("column_name")=="desire_value").CopyToDataTable()
Для этого вы можете использовать метод Select
таблицы данных или свойство фильтра DefaultDataView
в таблице.
Для метода Select
:
var rows = dataSet.Tables[0].Select("Col1 = 'MyValue'");
Для фильтра DefaultView
:
dataSet.Tables[0].DefaultView.Fitler = "Col1 = 'MyValue'";
foreach (var drv in dataSet.Tables[0].DefaultView)
{
// Do your processing
}
Зачем использовать лямбда, а не выбрать?
DataRow[] foundRow = ( dataSet.Tables[0].Rows.Select("Col1 = 'MyValue'");
Код, который вы написали, проверяет, что существует только одна строка, которая выполняет ваше условие поиска.
Если вам действительно нужны строки, оставьте Assert
и Count