मैं linq का उपयोग कर यह परिणाम कैसे प्राप्त कर सकता हूं?

मेरे पास वर्तमान में दो टेबल हैं: उपयोगकर्ता की एक तालिका और वोट की एक तालिका। वोट तालिका एक रिकॉर्ड स्टोर करती है जिसमें उपयोगकर्ता का आईडी होता है।

एक साधारण उदाहरण के रूप में, मान लें कि मेरे उपयोगकर्ता तालिका में निम्नलिखित फ़ील्ड हैं:

UserId, Name, Age, Gender

और मेरे वोट तालिका में है:

UserId, DateCreated

What I want to do is select the top 10 users that have the highest votes.

मैं यह कैसे कर सकता हूँ?

धन्यवाद

0
यह समस्या है: मैंने खोज के माध्यम से कुछ भी नहीं ढूंढ पाया है क्योंकि समस्या का मेरा विवरण इतना वर्बोज़ है। मुझे नहीं पता कि कहां बारी है! बिल्ली, अगर कोई मुझे किसी न किसी दिशा में इंगित कर सकता है कि मुझे क्या खोजना चाहिए, तो यह बहुत उपयोगी होगा
जोड़ा लेखक alimac83, स्रोत
माफ़ी, फ़ील्ड गलत थे - अब इसे और अधिक समझना चाहिए
जोड़ा लेखक alimac83, स्रोत
शायद मैं उलझन में हूं, लेकिन आप कहीं भी वोटों की संख्या संग्रहित नहीं कर रहे हैं। आपके प्रश्नों के संबंध में आपकी तालिकाओं का कोई मतलब नहीं है।
जोड़ा लेखक DanteTheEgregore, स्रोत
@ 大师 燈 XiHuan मुझे लगा कि। बस इसे पहले गलत तरीके से पढ़ाएं।
जोड़ा लेखक DanteTheEgregore, स्रोत
तो आपके वोट-टेबल में केवल एक फ़ील्ड UserId है?
जोड़ा लेखक sloth, स्रोत
आपकी क्वेरी अब तक कैसी दिखती है? और "उच्चतम वोट" का क्या अर्थ है?
जोड़ा लेखक p.s.w.g, स्रोत

3 उत्तर

यदि आपके पास विदेशी कुंजी/संपत्ति मैप नहीं है:

  var query = (from u in db.Users
              join v in (
               from v in db.Votes
               group v by v.UserId into grp
               select new {
                 UserId = grp.Key,
                 Count = grp.Count()
               }) on u.Id equals v.UserId into l_vset
              from l_v in l_vset.DefaultIfEmpty()
              orderby l_v == null ? 0 : l_v.Count descending
              select new {
                User = u,
                Votes = l_v == null ? 0 : l_v.Count
              }).Take(10);
0
जोड़ा
Context.Users.OrderByDescending(x => x.Votes.Count()).Take(10)
0
जोड़ा
फिक्स्ड। धन्यवाद दोस्तों!
जोड़ा लेखक Mansfield, स्रोत
मुझे लगता है कि यह OrderByDescending होना चाहिए
जोड़ा लेखक sloth, स्रोत
कम से कम वोट वाले उपयोगकर्ताओं को बचाता है।
जोड़ा लेखक AxelEckenberger, स्रोत
यह क्वेरी 10 उपयोगकर्ताओं को कम से कम वोटों के साथ वापस कर देगी।
जोड़ा लेखक Somedust, स्रोत

मान लें कि आपको अपनी टेबल के बीच नेविगेशन गुण स्थापित किए गए हैं, आप यह कर सकते हैं:

var results = db.Users.OrderByDescending(u => u.Votes.Count()).Take(10);

यह शीर्ष 10 उपयोगकर्ताओं को वोटों की सबसे बड़ी संख्या के साथ मिलेगा।

0
जोड़ा
डाउनवोट क्यों?
जोड़ा लेखक p.s.w.g, स्रोत