मैं LINQ का उपयोग कर डेटाटेबल से नामों की एक अलग, आदेशित सूची कैसे प्राप्त करूं?

मेरे पास एक डेटा कॉलम वाला डेटाटेबल है। मैं वर्णानुक्रमित क्रमशः अद्वितीय नामों का संग्रह उत्पन्न करना चाहता हूं। निम्न क्वेरी ऑर्डर खंड को अनदेखा करती है।

var names =
    (from DataRow dr in dataTable.Rows
    orderby (string)dr["Name"]
    select (string)dr["Name"]).Distinct();

ऑर्डरबी क्यों लागू नहीं किया जाता है?

0
जोड़ा संपादित
विचारों: 11

5 उत्तर

समस्या यह है कि विशिष्ट  ऑपरेटर यह नहीं देता है कि यह होगा  के मूल क्रम को बनाए रखें  मान।

तो आपकी क्वेरी को इस तरह काम करने की आवश्यकता होगी

var names = (from DataRow dr in dataTable.Rows
             select (string)dr["Name"]).Distinct().OrderBy( name => name );
0
जोड़ा

निम्नलिखित कोशिश करें

var names = (from dr in dataTable.Rows
             select (string)dr["Name"]).Distinct().OrderBy(name => name);

आपको जो चाहिए उसे काम करना चाहिए।

0
जोड़ा

इसे और अधिक पठनीय और रखरखाव करने के लिए, आप इसे कई LINQ कथनों में भी विभाजित कर सकते हैं।

  1. सबसे पहले, अपने डेटा को एक नई सूची में चुनें, चलिए इसे x1 कहते हैं, वांछित होने पर प्रक्षेपण करें
  2. इसके बाद, x1 से x2 में, जो भी भेद आपको आवश्यक है उसका उपयोग करके एक अलग सूची बनाएं
  3. आखिरकार, x2 से x3 में ऑर्डर की गई सूची बनाएं, जो भी आप चाहते हैं उसे क्रमबद्ध करें
0
जोड़ा

निम्नलिखित का प्रयास करें:

dataTable.Rows.Cast().select(dr => dr["Name"].ToString()).Distinct().OrderBy(name => name);
0
जोड़ा

सार के लिए: सभी उत्तरों में कुछ सामान्य है।

ऑर्डरबी को अंतिम ऑपरेशन होना चाहिए।

0
जोड़ा