我的DataTable有两列作者和 Bookname 。
我想检查DataTable中是否已存在给定的字符串值 Author 。是否有一些内置的方法来检查它,比如Arrays array.contains
?
答案 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 => ...
你可以用任何
来补充