2013-02-26 20 views
13

क्या डेटाग्रिड व्यू पंक्ति खोजने के लिए LINQ शैली क्वेरी का उपयोग करने का कोई तरीका है? मैं एक विशिष्ट वस्तु से बाध्य एक खोजने की कोशिश कर रहा हूं और इसे हाइलाइट करता हूं।डेटाग्रिड व्यू पंक्ति खोजने के लिए मैं LINQ का उपयोग कैसे कर सकता हूं?

MyDatagrid.Rows.FirstOrDefault(r => r.DataBoundItem == myItem).Selected = true; 

त्रुटि 1 'System.Windows.Forms.DataGridViewRowCollection' 'FirstOrDefault' और कोई विस्तार विधि 'FirstOrDefault' प्रकार का एक पहला तर्क को स्वीकार करने 'System.Windows.Forms.DataGridViewRowCollection के लिए एक परिभाषा शामिल नहीं है 'पाया जा सकता है (यदि आप एक का उपयोग कर के निर्देश या एक विधानसभा संदर्भ याद कर रहे हैं?)

उत्तर

30

आप के बाद से DataGridViewRowCollection केवल लागू करता IEnumerable<DataGridViewRow> को कास्ट करने के लिए की जरूरत है IEnumerable:

MyDatagrid.Rows 
    .Cast<DataGridViewRow>() 
    .FirstOrDefault(r => r.DataBoundItem == myItem).Selected = true; 
1

जो लोग यहाँ आया वीबी-संस्करण की तलाश के लिए, ली की जवाब करने के लिए अनुवाद:

MyDatagrid.Rows.Cast(Of DataGridViewRow)().FirstOrDefault(Function(r) r.DataBoundItem Is myItem).Selected = True 

इसके अलावा, अगर तुम मुझे पसंद कर रहे हैं, और यह प्रयोग कर रहे हैं से अपने DataGridViewRow खोजने के लिए अपने बाध्य DataTable.DataRow (DataGridView.DataSource = DataTable), तो आप इसे इस तरह उपयोग कर सकते हैं:

Dim MyDataRowSearch() As DataRow = MyDataTable.Select("SomeColumn = SomeValue") 
If MyDataRowSearch.Count = 1 Then 
    MyDataGrid.Rows.Cast(Of DataGridViewRow)().FirstOrDefault(Function(r) DirectCast(r.DataBoundItem, DataRowView).Row Is MyDataRowSearch(0)).Selected = True 
End If 

यह बहुत अपने DataGridView के माध्यम से पाशन मूल्यों से मेल खाते की तलाश की तुलना में अधिक प्रभावी है।

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