101

AuthorBooknameの 2 つの列を持つ DataTable があります。

指定された文字列値Authorが DataTable に既に存在するかどうかを確認したいと思います。Arrays のように、それをチェックするための組み込みメソッドはあり array.containsますか?

4

5 に答える 5

224

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が存在するかどうかを確認したい場合はどうなりますか?私はそれをすべてループして見つけることができますが、より良い方法はありますか?– </ p>

はい、次のクエリを使用できます。

DataColumn[] columns = tbl.Columns.Cast<DataColumn>().ToArray();
bool anyFieldContainsPepsi = tbl.AsEnumerable()
    .Any(row => columns.Any(col => row[col].ToString() == "PEPSI"));
于 2012-05-22T13:46:55.953 に答える
14

Linqを使用できます。何かのようなもの:

bool exists = dt.AsEnumerable().Where(c => c.Field<string>("Author").Equals("your lookup value")).Count() > 0;
于 2012-05-22T13:46:37.680 に答える
10
DataRow rw = table.AsEnumerable().FirstOrDefault(tt => tt.Field<string>("Author") == "Name");
if (rw != null)
{
// row exists
}

using 句に追加します。

using System.Linq;

そして追加:

System.Data.DataSetExtensions

参照に。

于 2012-05-22T13:49:34.823 に答える
5

DataTable.Select()メソッドを使用できるはずです。このようにできます。

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

Select() 関数は、where ステートメントに一致する結果の DataRows の配列を返します。

于 2012-05-22T13:52:15.363 に答える
0

データベースをIEnumberableとして設定し、linqを使用して値が存在するかどうかを確認できます。このリンクをチェックしてください

レコードが存在するかどうかを確認するためのDatatableに対するLINQクエリ

与えられた例は

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

あなたはどこででも補足することができます

于 2012-05-22T13:46:50.800 に答える