У меня есть две таблицы в базе данных, которые я объединяю в 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");
}
}
}