साथ datatable मैं दो स्तंभ में पंक्ति खोजें:एक datatable में विशिष्ट आईडी
ID, Calls.
मैं कैसे प्राप्त कर सकता क्या कॉल का मूल्य where ID = 5
है?
5 कुछ भी हो सकता है, यह सिर्फ उदाहरण के लिए है। प्रत्येक पंक्ति में एक अद्वितीय आईडी है।
साथ datatable मैं दो स्तंभ में पंक्ति खोजें:एक datatable में विशिष्ट आईडी
ID, Calls.
मैं कैसे प्राप्त कर सकता क्या कॉल का मूल्य where ID = 5
है?
5 कुछ भी हो सकता है, यह सिर्फ उदाहरण के लिए है। प्रत्येक पंक्ति में एक अद्वितीय आईडी है।
इस तरह, के लिए खोज करने के लिए एक स्ट्रिंग मापदंड करें:
string searchExpression = "ID = 5"
फिर DataTable
की .Select()
विधि का उपयोग वस्तु, इस तरह:
DataRow[] foundRows = YourDataTable.Select(searchExpression);
अब आप परिणाम है, इस तरह के माध्यम से लूप कर सकते हैं:
int numberOfCalls;
bool result;
foreach(DataRow dr in foundRows)
{
// Get value of Calls here
result = Int32.TryParse(dr["Calls"], out numberOfCalls);
// Optionally, you can check the result of the attempted try parse here
// and do something if you wish
if(result)
{
// Try parse to 32-bit integer worked
}
else
{
// Try parse to 32-bit integer failed
}
}
आप के बाद से प्रत्येक पंक्ति की अनन्य आईडी है/डेटासेट के लिए LINQ का उपयोग कर सकते DataTable
var rows = dt.AsEnumerable()
.Where(r=> r.Field<int>("ID") == 5);
, आप Single/SingleOrDefault
का उपयोग करना चाहिए जो अपवाद फेंक यदि आप कई रिकॉर्ड वापस मिल जाएगा।
DataRow dr = dt.AsEnumerable()
.SingleOrDefault(r=> r.Field<int>("ID") == 5);
(स्थानापन्न int
अपने आईडी क्षेत्र के प्रकार के लिए)
कुछ समय इस तालिका का उपयोग करके तालिका से पंक्तियों का चयन करने में असमर्थ है "DataRow [] foundRows = YourDataTable.Select (searchExpression);"। लेकिन जब मैं LINQ का उपयोग कर रहा हूँ। यह अच्छा काम कर रहा है। धन्यवाद हबीब। –
धन्यवाद! मुझे LINQ पसंद है। –
DataRow dataRow = dataTable.AsEnumerable().FirstOrDefault(r => Convert.ToInt32(r["ID"]) == 5);
if (dataRow != null)
{
// code
}
यदि यह एक टाइप डेटासेट है:
MyDatasetType.MyDataTableRow dataRow = dataSet.MyDataTable.FirstOrDefault(r => r.ID == 5);
if (dataRow != null)
{
// code
}
आप विधि के साथ की कोशिश कर सकते चयन
DataRow[] rows = table.Select("ID = 7");
इस कोड को आजमाएं
DataRow foundRow = FinalDt.Rows.Find(Value);
लेकिन पट्टा पर सेट एक प्राथमिक कुंजी
नमस्ते बस एक साधारण समारोह के रूप में नीचे दिखाया गया लग रहा है कि .. सभी पंक्तियों जहां कॉल पैरामीटर डाला, वह मान्य या सच है कि रिटर्न पैदा करते हैं।
public DataTable SearchRecords(string Col1, DataTable RecordDT_, int KeyWORD)
{
TempTable = RecordDT_;
DataView DV = new DataView(TempTable);
DV.RowFilter = string.Format(string.Format("Convert({0},'System.String')",Col1) + " LIKE '{0}'", KeyWORD);
return DV.ToTable();
}
और बस इसे नीचे दिखाए गए अनुसार कॉल करें;
DataTable RowsFound=SearchRecords("IdColumn", OriginalTable,5);
जहां 5 आईडी है। धन्यवाद ..
मैं निम्नलिखित कोड का उपयोग कर सकता हूं। सभी को धन्यवाद।
int intID = 5;
DataTable Dt = MyFuctions.GetData();
Dt.PrimaryKey = new DataColumn[] { Dt.Columns["ID"] };
DataRow Drw = Dt.Rows.Find(intID);
if (Drw != null) Dt.Rows.Remove(Drw);
अनावश्यक लूप से बचने की कोशिश करें और यदि आवश्यक हो तो इसके लिए जाएं।
string SearchByColumn = "ColumnName=" + value;
DataRow[] hasRows = currentDataTable.Select(SearchByColumn);
if (hasRows.Length == 0)
{
//your logic goes here
}
else
{
//your logic goes here
}
यदि आप विशिष्ट आईडी द्वारा खोजना चाहते हैं तो तालिका में प्राथमिक कुंजी होनी चाहिए।
क्या आप इसे चयनित कथन के हिस्से के रूप में नहीं कर सके? "चयन आईडी, MyTable कहां से कॉल करता है आईडी = @ id_search"। फिर बस डेटाबेस कॉल पर "@id_search" पैरामीटर प्रदान करें। यह LINQ से तेज़ होने जा रहा है, विशेष रूप से मानते हुए आईडी प्राथमिक कुंजी या अनुक्रमित है। –
डेटाबेस नहीं, डेटासेट/डेटाटेबल मैं डरता हूं। – RSM