Saya memiliki DataTable dengan dua kolom Penulis dan Nama Buku .
Saya ingin memeriksa apakah Author nilai string yang diberikan sudah ada di DataTable. Apakah ada metode bawaan untuk memeriksanya, seperti untuk Array array.contains
?
Saya memiliki DataTable dengan dua kolom Penulis dan Nama Buku .
Saya ingin memeriksa apakah Author nilai string yang diberikan sudah ada di DataTable. Apakah ada metode bawaan untuk memeriksanya, seperti untuk Array array.contains
?
Jawaban:
Anda dapat menggunakan LINQ-to-DataSet
dengan Enumerable.Any
:
String author = "John Grisham";
bool contains = tbl.AsEnumerable().Any(row => author == row.Field<String>("Author"));
Pendekatan lain adalah dengan menggunakan DataTable.Select
:
DataRow[] foundAuthors = tbl.Select("Author = '" + searchAuthor + "'");
if(foundAuthors.Length != 0)
{
// do something...
}
T: Bagaimana jika kita tidak mengetahui header kolom dan ingin mengetahui apakah ada nilai sel
PEPSI
di kolom row'c? Saya dapat mengulang semuanya untuk mencari tahu tetapi adakah cara yang lebih baik? -
Ya, Anda dapat menggunakan kueri ini:
DataColumn[] columns = tbl.Columns.Cast<DataColumn>().ToArray();
bool anyFieldContainsPepsi = tbl.AsEnumerable()
.Any(row => columns.Any(col => row[col].ToString() == "PEPSI"));
System.Data.DataSetExtensions
ke referensi dan using System.Linq;
menggunakan kelas
DataTable.Select
sintaks lama terbatas sedangkan LINQ dapat menggunakan kerangka kerja .NET penuh atau metode khusus. Jadi hanya jika Anda terjebak dengan NET 2 Anda harus menggunakan DataTable.Select
, jika tidak saya akan selalu lebih suka LINQ
tbl.Select()
secara dramatis lebih cepat daripada pendekatan lainnya.
Anda bisa menggunakan Linq. Sesuatu seperti:
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
}
tambahkan ke klausa penggunaan Anda:
using System.Linq;
dan tambahkan :
System.Data.DataSetExtensions
untuk referensi.
Anda harus dapat menggunakan metode DataTable.Select () . Anda dapat menggunakannya seperti ini.
if(myDataTable.Select("Author = '" + AuthorName.Replace("'","''") + '").Length > 0)
...
Fungsi Select () mengembalikan larik DataRows untuk hasil yang cocok dengan pernyataan where.
Anda dapat mengatur database sebagai IEnumberable dan menggunakan linq untuk memeriksa apakah nilainya ada. lihat tautan ini
LINQ Query on Datatable untuk memeriksa apakah record ada
contoh yang diberikan adalah
var dataRowQuery= myDataTable.AsEnumerable().Where(row => ...
Anda bisa melengkapi mana dengan apapun
table.Any(t => t.Author == author);