2013-06-21 6 views
5

का उपयोग कर डेटाव्यू से मूल्य पाएं मैं कॉलम नाम का उपयोग करके डेटाव्यू से मूल्य ढूंढने की कोशिश कर रहा हूं। मेरा डेटासेट मूल्य दिखाता है लेकिन मेरी स्थिति हालत लौटती है। मैं सी # का उपयोग कर एएसपीनेट में काम कर रहा हूं।कॉलम नाम

मैंने अलग-अलग कोड के साथ प्रयास किया है। मैं इस

dv[0].DataView.Table.Columns[0].ToString().Contains("52") 
    //RETURN FALSE 

OR 

dv[0].Equals("52") 
    // //RETURN FALSE 

या

dv[0].Find("52") 
    // //RETURN FALSE 

के बाद की तरह मूल्य प्राप्त करने की कोशिश कर रहा हूँ मेरी डाटासेट enter image description here

+0

आप इस तरह somthing के लिए देख रहे हैं http://msdn.microsoft.com/en-us/library/yth8t382%28v=vs.90%29.aspx? – Karthik

उत्तर

0
int rowIndex = dv.Find("52"); 

if (rowIndex == -1) { 
    Console.WriteLine("No match found."); 
} 
else { 
    Console.WriteLine("{0}, {1}", 
    dv(rowIndex)("GBA_Nbr_GBAccount").ToString(), 
    dv(rowIndex)("GBA_Nam_GBAccount").ToString()); 
} 

है मुझे लगता है कि आपकी समस्या का समाधान हो सकता है, या कम से बहुत कम आपको सही दिशा में इंगित करता है।

2

यदि "GBA_Nbr_GBAccount" कॉलम एक स्ट्रिंग प्रकार है, तो इसमें रिक्त स्थान हो सकते हैं। तुलना करने से पहले आपको पाठ को ट्रिम करना चाहिए। इस

dv[0]["GBA_Nbr_GBAccount"].ToString().Trim().Equals("52"); 
1

आप Linq इस्तेमाल कर सकते हैं datatable या DataView क्वेरी करने के लिए प्रयास करें। , न कोई स्ट्रिंग

var condition = yourDataTable.AsEnumerable() 
          .Any(r => r.Field<int>("GBA_Nbr_GBAccount") == 52); 

var condition = yourDataView.Cast<DataRowView>() 
          .Any(rv => rv.Row.Field<int>("GBA_Nbr_GBAccount") == 52); 

उदाहरण अनुप्रयोग का उपयोग

var condition = yourDataTable.AsEnumerable() 
          .Any(r => r.Field<string>("GBA_Nbr_GBAccount") == "52"); 

var condition = yourDataView.Cast<DataRowView>() 
          .Any(rv => rv.Row.Field<string>("GBA_Nbr_GBAccount") == "52"); 

यदि यह कॉलम एक पूर्णांक था, बस Field<string>Field<int> को बदल सकते हैं और एक पूर्णांक के खिलाफ तुलना: उदाहरण के लिए, अपने कॉलम संभालने प्रकार स्ट्रिंग की है स्ट्रिंग कॉलम:

static void Main(string[] args) 
{ 
    DataSet dataset = new DataSet(); 
    dataset.Tables.Add(new DataTable("table1")); 
    dataset.Tables[0].Columns.Add(new DataColumn("Value", typeof(string))); 
    dataset.Tables[0].Rows.Add("10"); 
    dataset.Tables[0].Rows.Add("52"); 

    DataTable table = dataset.Tables[0]; 
    DataView view = table.DefaultView; 

    var condition1 = table.AsEnumerable().Any(r => r.Field<string>("Value") == "52"); 

    var condition2 = view.Cast<DataRowView>().Any(rv => rv.Row.Field<string>("Value") == "52"); 

    Console.WriteLine(String.Format("Result querying datatable: '{0}'. Result using dataview:'{1}'", condition1, condition2)); 
    Console.ReadLine(); 
} 

यदि आप वास्तव में कॉलम के लिए स्ट्रिंग का उपयोग कर रहे हैं, तो सफेद रिक्त स्थान की जांच करें और आवश्यकता होने पर ट्रिम लागू करें। एक DataView में एक विशिष्ट स्तंभ के होने की जाँच करने के लिए

1

एक तरह से जैसा होगा निम्नलिखित:

if (dv.Table.Columns["Name"] != null) 
{ 
//Name column exists. Add Logic here 
} 
1

बजाय DataViewManager वस्तु का प्रयोग करें यह एक डेटासेट संपत्ति के साथ जुड़े है और डाटासेट सब है सामान्य डेटासेट विशेषताएं। तो, आप dataset.tables [सूचकांक] वस्तु पार कर सकते हैं ...

आशा है कि यह मदद करता है

उदाहरण: dv.DataViewManager.DataSet.Tables[0].Rows[0][1]

धन्यवाद, सैम

+0

क्या होगा यदि मैं पहली पंक्ति का अंतिम स्तंभ चाहता हूं? – SearchForKnowledge

+0

आप स्तंभ नाम से स्तंभ प्राप्त करना चाहते हैं तो इस var value = dv.DataViewManager.DataSet.Tables[0].Rows[0]["ColumnName"]; या का उपयोग आप पहली पंक्ति के अंतिम स्तंभ पाने के लिए तो इस का उपयोग करना चाहते हैं: int maxColumns = dv.DataViewManager.DataSet.Tables[0].Columns.Count; var value = dv.DataViewManager.DataSet.Tables[0].Rows[0][maxColumns - 1]; आशा है कि इसके बारे में कतार में है कि तुम क्या पूछ रहे थे ... धन्यवाद, – Sam

+0

जैसा कि प्रलेखन में उल्लिखित है, DataViews को DataViewManager के बिना बनाया जा सकता है, और उस स्थिति में DataViewManager शून्य है। – Dono

संबंधित मुद्दे