检查dataTable中是否存在值?

时间:2012-05-22 13:44:18

标签: c# datatable

我的DataTable有两列作者 Bookname

我想检查DataTable中是否已存在给定的字符串值 Author 。是否有一些内置的方法来检查它,比如Arrays array.contains

5 个答案:

答案 0 :(得分:180)

您可以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...
}

  

问:如果我们不知道Headers列,我们想要查找是否有任何内容   单元格值PEPSI是否存在于任何行的列中?我可以把它全部循环到   找出来,但有更好的方法吗? -

是的,您可以使用此查询:

DataColumn[] columns = tbl.Columns.Cast<DataColumn>().ToArray();
bool anyFieldContainsPepsi = tbl.AsEnumerable()
    .Any(row => columns.Any(col => row[col].ToString() == "PEPSI"));

答案 1 :(得分:9)

您可以使用Linq。类似的东西:

bool exists = dt.AsEnumerable().Where(c => c.Field<string>("Author").Equals("your lookup value")).Count() > 0;

答案 2 :(得分:6)

DataRow rw = table.AsEnumerable().FirstOrDefault(tt => tt.Field<string>("Author") == "Name");
if (rw != null)
{
// row exists
}

添加到您的使用条款:

using System.Linq;

并添加:

  

System.Data.DataSetExtensions

参考。

答案 3 :(得分:4)

您应该可以使用DataTable.Select()方法。你可以像我这样。

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

Select()函数返回与where语句匹配的结果的DataRows数组。

答案 4 :(得分:0)

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

LINQ Query on Datatable to check if record exists

给出的例子是

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

你可以用任何

来补充