मेरे पास दो टेबल हैं:
tblBadge
-------
ID
Name
tblBadgeUsers
-------
BadgeID
UserID
एक उपयोगकर्ता के पास कई बैज हो सकते हैं, सभी संबंध SQL डेटाबेस में ठीक से स्थापित होते हैं।
मैं उन बैज की कुल संख्या के साथ, उपयोगकर्ता के पास मौजूद सभी बैज की एक सूची वापस करने का प्रयास कर रहा हूं। यह लगभग है जहाँ तक मैं प्राप्त कर सकता हूँ, मैं बहुत भ्रमित हो रहा हूँ। मैं एक अतिरिक्त कॉलम के साथ tblBadge डेटा वापस करना चाहता हूं, जिसमें दिए गए बैज का कुल योग दिखाया गया है।
यह काम नहीं करता है लेकिन मेरा प्रयास है:
var q = db.tblBadgeUsers
.Where(c => c.UserID == UserID)
.GroupBy(c => c.BadgeID)
.Select(c => new { BadgeCount = c.Count(), Record = c.tblBadge });
1 उत्तर
यह देखते हुए कि एक बैज केवल में वास्तव में एक बैज आईडी और एक उपयोगकर्ता होता है, ऐसा लगता है कि आपको उपयोग के लिए बस बैज आईडी और उस बैज की गिनती प्राप्त करने की आवश्यकता है - जिसका अर्थ है कि केवल कुंजी प्राप्त करना समूह:
var q = db.tblBadgeUsers
.Where(c => c.UserID == UserID)
.GroupBy(c => c.BadgeID)
.Select(c => new { BadgeCount = c.Count(), BadgeId = c.Key });
यदि प्रत्येक बैज के बारे में अधिक जानकारी है, तो आप यह करना चाहेंगे:
var q = db.tblBadgeUsers
.Where(c => c.UserID == UserID)
.GroupBy(c => c.BadgeID)
.Select(c => new { BadgeCount = c.Count(), BadgeId = c.Key, Badges = c });
तब आप कर सकते थे:
foreach (var badgeType in q)
{
Console.WriteLine("{0}: {1}", badgeType.BadgeId, badgeType.BadgeCount);
foreach (var badge in q.Badges)
{
// Deal with the badge information
}
}
संबंधित सवाल
नए सवाल
c#
C # (उच्चारण "तेज देखें") Microsoft द्वारा विकसित एक उच्च स्तरीय, सांख्यिकीय रूप से टाइप किया हुआ, बहु-प्रतिमान प्रोग्रामिंग भाषा है। C # कोड आमतौर पर Microsoft के .NET परिवार के टूल और रन-टाइम को लक्षित करता है, जिसमें .NET फ्रेमवर्क, .NET कोर और Xamarin अन्य शामिल हैं। C # या C # के औपचारिक विनिर्देश में लिखे गए कोड के बारे में प्रश्नों के लिए इस टैग का उपयोग करें।