Как использовать лямбда-выражения для фильтрации DataRows?

Большинство iOS emojis используют коды над базовой многоязычной плоскостью в таблице Unicode. Например,

13
задан casperOne 11 August 2010 в 14:54
поделиться

4 ответа

Для этого можно использовать 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");
26
ответ дан 1 December 2019 в 19:14
поделиться

Для этого можно использовать метод 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
}
6
ответ дан 1 December 2019 в 19:14
поделиться

Почему использовать лямбда, а не select ?

  DataRow[] foundRow = ( dataSet.Tables[0].Rows.Select("Col1 = 'MyValue'");
2
ответ дан 1 December 2019 в 19:14
поделиться

Написанный вами код проверяет, что есть только одна строка, которая удовлетворяет вашему условию поиска. Если вам действительно нужны строки, отбросьте Assert и Count

0
ответ дан 1 December 2019 в 19:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: