इकाई फ्रेमवर्क अलग नाम का चयन करें


जवाबों:


271

लंबोदर अभिव्यक्ति का उपयोग करते हुए ।।

 var result = EFContext.TestAddresses.Select(m => m.Name).Distinct();

1
हो सकता है कि एक कठिन प्रश्न है, लेकिन क्या यह सभी पतों को C # कोड लेयर पर वापस करता है और फिर उन्हें फ़िल्टर करता है, या क्या यह केवल अद्वितीय मानों को वापस करने के लिए डेटाबेस सर्वर के लिए उपयुक्त क्वेरी पास करता है?
DA

51

इसे इस्तेमाल करे:

var results = (from ta in context.TestAddresses
               select ta.Name).Distinct();

यह आपको दे देगा IEnumerable<string>- आप .ToList()इसे प्राप्त करने के लिए कॉल कर सकते हैं List<string>


1
इस तरह से समूह बनाने से बेहतर प्रदर्शन मिलता है। विशिष्ट: SQL सर्वर निष्पादन समय: CPU समय = 0 ms, बीता हुआ समय = 50 ms। समूहीकरण: SQL सर्वर निष्पादन समय: CPU समय = 0 एमएस, बीता समय = 112 एमएस।
आंद्रे मेंडोंका

24

जिस तरह से @alliswell ने दिखाया वह पूरी तरह से वैध है, और एक और तरीका है! :)

var result = EFContext.TestAddresses
    .GroupBy(ta => ta.Name)
    .Select(ta => ta.Key);

मुझे आशा है कि यह किसी के लिए उपयोगी होगा।


1
यह मेरे लिए बहुत उपयोगी था क्योंकि मुझे कई स्तंभों का चयन करने की आवश्यकता थी
mamashare

16
DBContext.TestAddresses.Select(m => m.NAME).Distinct();

यदि आपके पास कई कॉलम इस तरह हैं:

DBContext.TestAddresses.Select(m => new {m.NAME, m.ID}).Distinct();

इस उदाहरण में कोई डुप्लीकेट कैटिगरी और कोई कैटेनाम नहीं है, मुझे आशा है कि यह आपकी मदद करेगा


4

इकाई-रूपरेखा का चयन करें विकृत नाम:

मान लीजिए यदि आप ऐसे दृश्यों का उपयोग कर रहे हैं जिनमें आप कई तालिकाओं का उपयोग कर रहे हैं और आप उस स्थिति में अलग-अलग आवेदन करना चाहते हैं, तो पहले आपको वैरिएबल में मूल्य को संग्रहीत करना होगा और फिर आप इस तरह के वैरिएबल पर डिस्ट्रीक्ट लागू कर सकते हैं ...।

public List<Item_Img_Sal_VIEW> GetItemDescription(int ItemNo) 
        {
            var Result= db.Item_Img_Sal_VIEW.Where(p => p.ItemID == ItemNo).ToList();
            return Result.Distinct().ToList();
        }

या आप इस सरल उदाहरण की कोशिश कर सकते हैं

Public Function GetUniqueLocation() As List(Of Integer)
          Return db.LoginUsers.Select(Function(p) p.LocID).Distinct().ToList()
End Function

नमस्ते, जब मैं एक मेज पर ऐसा करता हूं, तो मुझे एक त्रुटि मिलती है -> स्ट्रिंग को IEnumreable में परिवर्तित नहीं कर सकता है .. क्या आप मुझे दिखा सकते हैं कि सूची कैसे प्राप्त करें ताकि मैं ड्रॉप डाउन सूची को पॉप्युलेट कर सकूं, जिसमें NVARCHAR वाले टेबल कॉलम से अलग मान हों ईएफ डीबी में।
एगी


2

ORDER BY items must appear in the select list if SELECT DISTINCTत्रुटि से बचने के लिए , सबसे अच्छा होना चाहिए

var results = (
    from ta in DBContext.TestAddresses
    select ta.Name
)
.Distinct()
.OrderBy( x => 1);

1

इकाई-रूपरेखा का चयन करें विकृत नाम:

मान लीजिए यदि आप प्रत्येक समूह के विशेष कॉलम के हर पहले डेटा को चाहते हैं;

 var data = objDb.TableName.GroupBy(dt => dt.ColumnName).Select(dt => new { dt.Key }).ToList();

            foreach (var item in data)
            {
                var data2= objDb.TableName.Where(dt=>dt.ColumnName==item.Key).Select(dt=>new {dt.SelectYourColumn}).Distinct().FirstOrDefault();

               //Eg.
                {
                       ListBox1.Items.Add(data2.ColumnName);                    
                }

            }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.