DataTableには2つの列AuthorとBooknameがあります。
指定された文字列値AuthorがDataTableに既に存在するかどうかを確認します。配列array.contains
のように、チェックするための組み込みメソッドはありますか?
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...
}
Q:列のヘッダーがわからず、行の列にセル値
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()関数は、whereステートメントに一致する結果のDataRowsの配列を返します。
データベースをIEnumberableとして設定し、linqを使用して値が存在するかどうかを確認できます。このリンクをご覧ください
レコードが存在するかどうかを確認するためのDatatableのLINQクエリ
与えられた例は
var dataRowQuery= myDataTable.AsEnumerable().Where(row => ...
どこでも補足できます