2012-12-11 18 views
8

की पहली स्थिति में डेटाटेबल पंक्ति को कैसे स्थानांतरित करें मैं एएसपीनेट डेटाटेबल पर एक विशिष्ट पंक्ति प्राप्त करना चाहता हूं और इसे कॉलम column1 मान पर इस डेटाटेबल बेस पर पहले स्थान पर ले जाना चाहता हूं। मेरा डेटाटेबल dt1 एक डीबी क्वेरी के माध्यम से पॉप्युलेट किया गया है और खोज का मूल्य किसी अन्य डीबी से दूसरी क्वेरी के माध्यम से है, इसलिए मुझे dt1 select समय पर खोजने के लिए मूल्य नहीं पता है।डेटाटेबल

// I use this variable to search into 
// DataTable 
string valueToSearch = "some value"; 

तो मैं स्तंभ column1 में मेरे DataTable में मूल्य some value खोज करने के लिए की जरूरत है। और फिर पूरी पंक्ति को पहली स्थिति में ले जाएं।

धन्यवाद।

+0

यह कैसे DataTable आबादी है

जब से मैं अपने डेटाबेस की कुछ भी नहीं पता है, यहाँ यह करने के लिए एक सामान्य तरीका है? डेटाबेस क्वेरी के माध्यम से –

+0

@WonkotheSane। चित्र I में स्ट्रिंग मानों के साथ 'कॉलम 1' है। – anmarti

उत्तर

22

हम पहले पंक्ति डेटा क्लोन करने के लिए है:

  DataRow[] dr = dtable.Select("column1 ='" + valueToSearch +"'"); 
      DataRow newRow = dtable.NewRow(); 
      // We "clone" the row 
      newRow.ItemArray = dr[0].ItemArray; 
      // We remove the old and insert the new 
      ds.Tables[0].Rows.Remove(dr[0]); 
      ds.Tables[0].Rows.InsertAt(newRow, 0); 
+0

शानदार समाधान –

0

स्तंभ की खोज मूल्य के लिए केवल एक ही रिकॉर्ड की तुलना में कोशिश यह

DataRow[] dr = dtEmp.Select("column1 ='" + valueToSearch +"'"); 
myDataTable.Rows.InsertAt(dr[0], 0); 
+0

मैं इसे सम्मिलित नहीं कर सकता क्योंकि यह पहले से ही इस डेटाटेबल से संबंधित है, इसलिए मुझे पहले से हटाना होगा। – anmarti

+1

इस पर एक नज़र डालें। आपको पंक्ति को हटाने की आवश्यकता नहीं है और यदि यह काम करता है तो इसे दोबारा डालने की आवश्यकता नहीं है। http://www.codeproject.com/Tips/312545/A-method-to-move-rows-within-a-DataTable –

0

आप इस पर प्रदर्शन का परीक्षण करना होगा, लेकिन एक तरह से यह करने के लिए है, तो क्वेरी में ही है। पंक्तियों को प्राप्त करें जो आप पहले शीर्ष पर चाहते हैं, और शेष पंक्तियों के साथ गठबंधन करें।

SELECT Column1, Column2, Column3 
FROM MyTable 
WHERE Column1 = 'some value' 

UNION 

SELECT Column1, Column2, Column3 
FROM MyTable 
WHERE Column1 <> 'some value' 
+0

मैं ऐसा नहीं कर सकता क्योंकि डेटाटेबल के स्रोत और खोज के मूल्य अलग हैं, इसलिए मुझे क्वेरी समय पर खोजने के लिए मूल्य नहीं पता है। – anmarti

+0

उस स्थिति में, मुझे लगता है कि आपको अधिक जानकारी देने के लिए अपना प्रश्न संपादित करना चाहिए। डेटाटेबल जनसंख्या (बाध्यकारी समेत) कैसे है, फ़िल्टर के रूप में दर्ज 'कुछ मूल्य' कैसे है, इत्यादि। अभी हम सभी आपके डिजाइन पर अनुमान लगा रहे हैं। –