Применить несколько фильтров к столбцам данных - PullRequest
0 голосов
/ 22 марта 2020

У меня есть две таблицы в базе данных, которые я объединяю в C# DataTable. Я хотел бы добавить несколько фильтров для данных, прежде чем импортировать их в DataTable.

У меня есть столбец ACTIVE, где значения 1 и 0. Также я хотел бы избавиться от всех других значений, которые не начинаются с 6 и 7 в столбце YRNRO.

Кажется, это работает:

DataTable results = dataTable.Select("ACTIVE = '1'").CopyToDataTable();

Однако после применения еще одного параметра он не работает:

DataTable results = dataTable.Select("ACTIVE = '1' AND YRNRO Like '6%' OR YRNRO Like '7%'").CopyToDataTable();

Также я попробовал другой подход, который лучше?:

using System.Linq;

...

DataTable results = dataTable.AsEnumerable()
                             .Where(r => r.Field<int>("ACTIVE") == 1)
                             .CopyToDataTable();

Это выдает ошибку:

System.InvalidCastException: 'Указанное приведение неверно.'

Вот еще немного из моего кода:

            ...

                dataTable.Merge(newTable);
            }

            DataTable results = dataTable.Select("ACTIVE = '1' AND YRNRO Like '6%' OR YRNRO Like '7%'").CopyToDataTable();

            //DataTable results = dataTable.AsEnumerable()
            //                 .Where(r => r.Field<int>("ACTIVE") == 1)
            //                 .CopyToDataTable();

            //Console.ReadLine();

            results.TableName = "MyTable";

            results.WriteXmlSchema("dtSchemaOrStructure.xml");

            results.WriteXml("dtData.xml");

        }
    }
}
...