Проверьте, существует ли значение в dataTable?


У меня есть DataTable с двумя столбцами автор и Bookname.

Я хочу проверить, если данное строковое значение автор уже существует в DataTable. Есть ли какой-то встроенный метод, чтобы проверить его, как для массивов array.contains?

5 65

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 => ...

вы можете дополнить где угодно