मुझे Linq से Entity के साथ अधिकतम आईडी कैसे मिलेगी?


84

मेरे पास एक तालिका उपयोगकर्ता है जिसके पास एक पहचान स्तंभ है UserID, अब कोड की सही लाइनक के लिए सही लाइनक क्या है जो मुझे अधिकतम लौटाएगा UserID?

मैंने कोशिश की:

using (MyDBEntities db = new MyDBEntities())
{
    var User = db.Users.Last();
    // or
    var User = db.Users.Max();

    return user.UserID;
}

लेकिन Lastऔर Maxसमर्थन प्रतीत नहीं होता।

कोई विचार?

जवाबों:


153

ऐसा करो

db.Users.OrderByDescending(u => u.UserId).FirstOrDefault();

4
क्या किसी को मैक्स (u => u.userId) समाधान की तुलना में इस समाधान का प्रदर्शन पता है?
फेलिक्स कील

मुझे इसके बारे में निश्चित नहीं है लेकिन IMHO मैक्स ऑर्डर की तुलना में अधिक प्रदर्शनकारी है, क्योंकि मैक्स O (n) है और सॉर्ट का अर्थ है सॉर्ट करने के लिए कुछ एल्गोरिदम, जो O (n) से बड़ा है।
लुइस

106

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

int intIdt = db.Users.Max(u => u.UserId);

अपडेट करें:

यदि कोई रिकॉर्ड नहीं है, तो उपरोक्त कोड का उपयोग करके अपवाद उत्पन्न करें

int? intIdt = db.Users.Max(u => (int?)u.UserId);

धन्यवाद यह मेरे लिए उपयोगी int है? intIdt = db.Users.Max (u => (int?) u.UserId);
जीएस शेखावत

3
क्या यह सिर्फ मैं या यह शैली जोनास कोंग्लसंड के उत्तर की तुलना में अधिक पठनीय है?
बॉर्नटोडकोड

2
@BornToCode यह इस बात पर निर्भर करता है कि आप वास्तव में क्या करने की कोशिश कर रहे हैं। यह समाधान प्रश्न का उत्तर देता है (इसे अधिकतम आईडी प्राप्त होता है), जबकि जोनास कोंग्लसंड का उत्तर अधिकतम आईडी के साथ वस्तु देता है।
अभिनयम

अधिकांश वाक्पटु उत्तर!
पेट्रीसिया

12
var max = db.Users.DefaultIfEmpty().Max(r => r == null ? 0 : r.ModelID);

जब db में कोई रिकॉर्ड नहीं होता है तो यह 0 होता है और बिना किसी अपवाद के।


3
r => r .ModelId ?? 0 - नए C # में शॉर्टकट
Krzysztof Skowronek

11

NisaPrieto

Users user = bd.Users.Where(u=> u.UserAge > 21).Max(u => u.UserID); 

काम नहीं करेगा क्योंकि MAX एक ही प्रकार के चर को लौटाता है जो कि इस मामले में ऐसा है कि एक INT एक उपयोगकर्ता वस्तु नहीं है।


3

यदि आप उपयोग कर रहे हैं asyncऔर awaitसुविधा के मामले में, यह इस प्रकार होगा:

User currentUser = await db.Users.OrderByDescending(u => u.UserId).FirstOrDefaultAsync();

-1

आपके द्वारा जोड़ी गई इकाई की आईडी प्राप्त करने का सबसे अच्छा तरीका इस प्रकार है:

public int InsertEntity(Entity factor)
{
    Db.Entities.Add(factor);
    Db.SaveChanges();
    var id = factor.id;
    return id;
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.