मेरे पास दो कॉलम लेखक और बुकनाम के साथ डेटाटेबल है ।
मैं जाँच करना चाहता हूँ कि दिए गए स्ट्रिंग मान लेखक DataTable में पहले से मौजूद है या नहीं। क्या इसे जांचने के लिए कुछ विधि बनाई गई है, जैसे कि अर्रेज़ array.contains
?
मेरे पास दो कॉलम लेखक और बुकनाम के साथ डेटाटेबल है ।
मैं जाँच करना चाहता हूँ कि दिए गए स्ट्रिंग मान लेखक 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...
}
प्रश्न: क्या होगा यदि हम कॉलम हेडर को नहीं जानते हैं और हम यह जानना चाहते हैं कि क्या कोई सेल वैल्यू
PEPSI
किसी भी पंक्तियों के कॉलम में मौजूद है? मैं यह पता लगाने के लिए लूप कर सकता हूं लेकिन क्या बेहतर तरीका है? -
हां, आप इस क्वेरी का उपयोग कर सकते हैं:
DataColumn[] columns = tbl.Columns.Cast<DataColumn>().ToArray();
bool anyFieldContainsPepsi = tbl.AsEnumerable()
.Any(row => columns.Any(col => row[col].ToString() == "PEPSI"));
System.Data.DataSetExtensions
संदर्भ में और using System.Linq;
कक्षा का उपयोग करने के लिए इन्हें जोड़ें
DataTable.Select
सिंटैक्स सीमित है, जबकि LINQ पूर्ण .NET फ्रेमवर्क या कस्टम तरीकों का उपयोग कर सकता है। तो केवल अगर आप .NET 2 में फंस गए हैं तो आपको उपयोग करना चाहिए DataTable.Select
, अन्यथा मैं हमेशा LINQ पसंद करूंगा
tbl.Select()
तो नाटकीय रूप से अन्य दृष्टिकोणों की तुलना में तेज़ है।
DataRow rw = table.AsEnumerable().FirstOrDefault(tt => tt.Field<string>("Author") == "Name");
if (rw != null)
{
// row exists
}
अपने उपयोग खंड में जोड़ें:
using System.Linq;
और जोड़ :
System.Data.DataSetExtensions
संदर्भ के लिए।
आपको DataTable.Select () पद्धति का उपयोग करने में सक्षम होना चाहिए । आप हमें इस तरह से कर सकते हैं।
if(myDataTable.Select("Author = '" + AuthorName.Replace("'","''") + '").Length > 0)
...
चयन () फ़ंसीटेशन, जहाँ कथन से मेल खाते परिणामों के लिए DataRows की एक सरणी देता है।
यदि आप मान मौजूद हैं, तो आप डेटाबेस को IEnumberable के रूप में सेट कर सकते हैं और जाँच करने के लिए linq का उपयोग कर सकते हैं। इस लिंक को देखें
अगर रिकॉर्ड मौजूद है, तो जांच करने के लिए डेटेबल पर LINQ क्वेरी
उदाहरण दिया गया है
var dataRowQuery= myDataTable.AsEnumerable().Where(row => ...
आप किसी भी के साथ पूरक कर सकते हैं
table.Any(t => t.Author == author);