2012-09-18 22 views
13

छंटाई मैं दो तरीकोंएक डेटा तालिका

table.DefaultView.Sort = "Town ASC, Cutomer ASC" 

table.Select("", "Town ASC, Cutomer ASC") 

लेकिन उनमें से कोई भी काम नहीं कर रहा था निम्नलिखित के साथ एक डेटा तालिका को वर्गीकृत करने की कोशिश की। यह हमेशा मूल क्रम में डेटा प्रदर्शित करता है। क्या आपको समस्या को हल करने का कोई विचार है।

उत्तर

20

(table.DefaultView.Sort = "Town ASC, Cutomer ASC") आप चाहिए defaultView नहीं DataTable उदाहरण ही

foreach(DataRowView r in table.DefaultView) 
{ 
    //... here you get the rows in sorted order 
    Console.WriteLine(r["Town"].ToString()); 
} 

बजाय DataTable की विधि का चयन का उपयोग का उपयोग कर मेज पर पाश, DataRow की एक सरणी का उत्पादन defaultView पर तरह अभिव्यक्ति की स्थापना के बाद । इस सरणी आपके अनुरोध, नहीं DataTable

DataRow[] rowList = table.Select("", "Town ASC, Cutomer ASC"); 
foreach(DataRow r in rowList) 
{ 
    Console.WriteLine(r["Town"].ToString()); 
} 
+0

यह काम किया। आपकी मदद के लिए धन्यवाद – pasanmaduranga

0
private void SortDataTable(DataTable dt, string sort) 
{ 
DataTable newDT = dt.Clone(); 
int rowCount = dt.Rows.Count; 

DataRow[] foundRows = dt.Select(null, sort); 
// Sort with Column name 
for (int i = 0; i < rowCount; i++) 
{ 
object[] arr = new object[dt.Columns.Count]; 
for (int j = 0; j < dt.Columns.Count; j++) 
{ 
arr[j] = foundRows[i][j]; 
} 
DataRow data_row = newDT.NewRow(); 
data_row.ItemArray = arr; 
newDT.Rows.Add(data_row); 
} 

//clear the incoming dt 
dt.Rows.Clear(); 

for (int i = 0; i < newDT.Rows.Count; i++) 
{ 
object[] arr = new object[dt.Columns.Count]; 
for (int j = 0; j < dt.Columns.Count; j++) 
{ 
arr[j] = newDT.Rows[i][j]; 
} 

DataRow data_row = dt.NewRow(); 
data_row.ItemArray = arr; 
dt.Rows.Add(data_row); 
} 
} 
23

से के रूप में क्रमबद्ध हो जाता है इस प्रयास करें:

Dim dataView As New DataView(table) 
dataView.Sort = " AutoID DESC, Name DESC" 
Dim dataTable AS DataTable = dataView.ToTable() 
+7

अच्छा, लेकिन आपको सलाह देनी चाहिए कि यह विधि एक डुप्लीकेट डेटाटेबल बनाता है, और यदि मूल एक बड़ा है तो यह बहुत प्रभावी नहीं है – Steve

13

यह सबसे छोटा रास्ता मैं किसी भी नए बनाए बिना एक DataTable सॉर्ट करने के लिए मिल सकता है था चर।

DataTable.DefaultView.Sort = "ColumnName ASC" 
DataTable = DataTable.DefaultView.ToTable 

कहाँ:

एएससी - आरोही

DESC - अवरोही

columnName - स्तंभ आपके द्वारा

DataTable क्रमबद्ध करना चाहते हैं - तालिका आप

क्रमबद्ध करना चाहते हैं
+0

मेरे लिए यहां सबसे अच्छा समाधान है। तेजी से काम करता है, मैंने वास्तव में डेटाबेस क्वेरीज को कम करने और क्लाइंट-साइड सॉर्ट करने के लिए इसे शामिल किया है। जोड़ने के लिए, अल्पविराम से अलग किए गए एकाधिक कॉलम को क्रमबद्ध करें, यानी: "Col1 ASC, Col2 DESC, Col3 ASC" – dya

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