Проверьте, существует ли значение в dataTable?
У меня есть DataTable с двумя столбцами автор и Bookname.
Я хочу проверить, если данное строковое значение автор уже существует в DataTable. Есть ли какой-то встроенный метод, чтобы проверить его, как для массивов array.contains
?
5 ответов:
можно использовать
LINQ-to-DataSet
СEnumerable.Any
:String author = "John Grisham"; bool contains = tbl.AsEnumerable().Any(row => author == row.Field<String>("Author"));
другой подход заключается в использовании
DataTable.Select
:DataRow[] foundAuthors = tbl.Select("Author = '" + searchAuthor + "'"); if(foundAuthors.Length != 0) { // do something... }
Q: Что делать, если мы не знаем заголовки столбцов, и мы хотим найти, если таковые имеются значение ячейки
PEPSI
существуют в любых строках ' c столбцов? Я петлю все узнайте, но есть ли лучший способ? -Да, вы можете использовать этот запрос:
DataColumn[] columns = tbl.Columns.Cast<DataColumn>().ToArray(); bool anyFieldContainsPepsi = tbl.AsEnumerable() .Any(row => columns.Any(col => row[col].ToString() == "PEPSI"));
вы можете использовать Linq. Что-то вроде:
bool exists = dt.AsEnumerable().Where(c => c.Field<string>("Author").Equals("your lookup value")).Count() > 0;
DataRow rw = table.AsEnumerable().FirstOrDefault(tt => tt.Field<string>("Author") == "Name"); if (rw != null) { // row exists }
добавить в предложение using:
using System.Linq;
и добавить :
вы должны быть в состоянии использовать DataTable.Select () метод. Вы можете нам это нравится.
if(myDataTable.Select("Author = '" + AuthorName.Replace("'","''") + '").Length > 0) ...
функция Select () возвращает массив данных для результатов, соответствующих оператору where.
вы можете установить базу данных как IEnumberable и использовать linq, чтобы проверить, существуют ли значения. проверьте эту ссылку
LINQ запрос на Datatable, чтобы проверить, если запись существует
данный пример
var dataRowQuery= myDataTable.AsEnumerable().Where(row => ...
вы можете дополнить где угодно