簡體   English   中英

檢查dataTable中是否存在值?

[英]Check if value exists in dataTable?

我有DataTable,有兩列AuthorBookname

我想檢查給定的字符串值Author是否已存在於DataTable中。 是否有一些內置的方法來檢查它,比如Arrays array.contains

您可以在Enumerable.Any使用LINQ-to-DataSet

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 ,該怎么辦? 我可以把它全部循環找出來但是有更好的方法嗎? -

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

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;

並添加:

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

你可以補充任何地方

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM