我有DataTable,有两列Author和Bookname.
我想检查给定的字符串值Author是否已存在于DataTable中.是否有一些内置的方法来检查它,比如Arrays array.contains?
Tim*_*ter 188
你可以用LINQ-to-DataSet与Enumerable.Any:
String author = "John Grisham";
bool contains = tbl.AsEnumerable().Any(row => author == row.Field<String>("Author"));
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用DataTable.Select:
DataRow[] foundAuthors = tbl.Select("Author = '" + searchAuthor + "'");
if(foundAuthors.Length != 0)
{
// do something...
}
Run Code Online (Sandbox Code Playgroud)
问:如果我们不知道Headers列,我们想要查找
PEPSI任何rows'c列中是否存在任何单元格值,该怎么办?我可以把它全部循环找出来但是有更好的方法吗?-
是的,您可以使用此查询:
DataColumn[] columns = tbl.Columns.Cast<DataColumn>().ToArray();
bool anyFieldContainsPepsi = tbl.AsEnumerable()
.Any(row => columns.Any(col => row[col].ToString() == "PEPSI"));
Run Code Online (Sandbox Code Playgroud)
你可以使用Linq.就像是:
bool exists = dt.AsEnumerable().Where(c => c.Field<string>("Author").Equals("your lookup value")).Count() > 0;
Run Code Online (Sandbox Code Playgroud)
DataRow rw = table.AsEnumerable().FirstOrDefault(tt => tt.Field<string>("Author") == "Name");
if (rw != null)
{
// row exists
}
Run Code Online (Sandbox Code Playgroud)
添加到您的using子句:
using System.Linq;
Run Code Online (Sandbox Code Playgroud)
并添加:
System.Data.DataSetExtensions
参考.
您应该能够使用DataTable.Select()方法。你可以这样我们。
if(myDataTable.Select("Author = '" + AuthorName.Replace("'","''") + '").Length > 0)
...
Run Code Online (Sandbox Code Playgroud)
Select() 函数为与 where 语句匹配的结果返回一个 DataRow 数组。
| 归档时间: |
|
| 查看次数: |
212396 次 |
| 最近记录: |