Yazar ve Kitap adı olmak üzere iki sütun içeren DataTable'ım var .
Yazar dizesi değerinin DataTable'da zaten mevcut olup olmadığını kontrol etmek istiyorum . Diziler gibi, kontrol etmek için yerleşik bir yöntem var mı array.contains
?
Yazar ve Kitap adı olmak üzere iki sütun içeren DataTable'ım var .
Yazar dizesi değerinin DataTable'da zaten mevcut olup olmadığını kontrol etmek istiyorum . Diziler gibi, kontrol etmek için yerleşik bir yöntem var mı array.contains
?
Yanıtlar:
Sen kullanabilirsiniz LINQ-to-DataSet
ile Enumerable.Any
:
String author = "John Grisham";
bool contains = tbl.AsEnumerable().Any(row => author == row.Field<String>("Author"));
Başka bir yaklaşım kullanmaktır DataTable.Select
:
DataRow[] foundAuthors = tbl.Select("Author = '" + searchAuthor + "'");
if(foundAuthors.Length != 0)
{
// do something...
}
S: Başlıklar sütunlarını bilmiyorsak ve
PEPSI
herhangi bir satırın c sütununda herhangi bir hücre değeri olup olmadığını bulmak istiyorsak ne olur ? Bulmak için hepsini döngüye sokabilirim ama daha iyi bir yol var mı? -
Evet, bu sorguyu kullanabilirsiniz:
DataColumn[] columns = tbl.Columns.Cast<DataColumn>().ToArray();
bool anyFieldContainsPepsi = tbl.AsEnumerable()
.Any(row => columns.Any(col => row[col].ToString() == "PEPSI"));
System.Data.DataSetExtensions
referansa ve using System.Linq;
sınıf kullanmaya ekleyin
DataTable.Select
sözdizimi sınırlıdır, oysa LINQ tam .NET çerçevesini veya özel yöntemleri kullanabilir. Bu nedenle, yalnızca .NET 2'ye bağlıysanız kullanmalısınız DataTable.Select
, aksi takdirde her zaman LINQ
tbl.Select()
, diğer yaklaşımlardan önemli ölçüde daha hızlıdır.
DataRow rw = table.AsEnumerable().FirstOrDefault(tt => tt.Field<string>("Author") == "Name");
if (rw != null)
{
// row exists
}
kullanım maddenize ekleyin:
using System.Linq;
ve Ekle :
System.Data.DataSetExtensions
referanslara.
DataTable.Select () yöntemini kullanabilmeniz gerekir . Bizi böyle yapabilirsin.
if(myDataTable.Select("Author = '" + AuthorName.Replace("'","''") + '").Length > 0)
...
Select () işlevi, where ifadesiyle eşleşen sonuçlar için bir DataRows dizisi döndürür.
veritabanını IEnumberable olarak ayarlayabilir ve değerlerin var olup olmadığını kontrol etmek için linq kullanabilirsiniz. bu bağlantıya bak
Kaydın var olup olmadığını kontrol etmek için Datatable'da LINQ Query
verilen örnek
var dataRowQuery= myDataTable.AsEnumerable().Where(row => ...
herhangi bir yerde tamamlayabilirsin
table.Any(t => t.Author == author);