检查数据表中是否存在值

本文关键字:存在 是否 数据表 检查 | 更新日期: 2023-09-27 18:34:53

我有数据表,有两列作者和书名

我想检查给定的字符串值作者是否已存在于数据表中。是否有一些内置方法来检查它,例如数组array.contains

检查数据表中是否存在值

您可以将

LINQ-to-DataSetEnumerable.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...
}

问:如果我们不知道标题列,并且我们想查找是否有任何列怎么办 单元格值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 System.Linq;

并添加:

System.Data.DataSetExtensions

到引用。

你应该能够使用 DataTable.Select(( 方法。 你可以这样说。

if(myDataTable.Select("Author = '" + AuthorName.Replace("'","''") + '").Length > 0)
    ...

Select(( 函数返回一个 DataRows 数组,用于与 where 语句匹配的结果。

可以将数据库设置为IEnumberable,并使用linq检查值是否存在。查看此链接

对数据表进行 LINQ 查询以检查记录是否存在

给出的例子是

var dataRowQuery= myDataTable.AsEnumerable().Where(row => ...

你可以补充任何