Friday, August 5, 2011

c# Linq Group ( maybe each category->contentList ) Join simple

Linq ашиглах шижээ:Тайлбаруудыг хасаад кодыг тест хийгээд үзээрэй

string[] angiud = new string[]{
        "1-p angi",  "2-p angi",  "3-p angi" };

List<Huuhed> huuhduud = ArrayList();

// Ангиудаар циклдэж байна
var result = from a in angiud

// Анги бүрийг хүүхдүүдэд холбож байна
join h in huuhduud on a equals h.Angi

// Холбоод гарсан үр дүн болох харгалзах хүүхдүүдийг олонлогт утга оноож байна
into huuhedCollection
// дээрх код бас  доорх мөрийг нэмж болно
// into huuhedCollection from o in huuhedCollection.DefaultIfEmpty()
// дээрх кодыг нэмснээр нь left join маягийн хоосон утга буцаах болно

// нэг мөр буцаж байна энэ нь ( variant )
select new { Angi = a, Huuhduud = huuhedCollection };

// Үр дүнг хэвлэхдээ result бол бүх үр дүн буюу мөрүүдийн олонлог
foreach (var r in result)
{
        // r өгөгдлийн нэг мөр өгөгдөл ба
        // class newClass {
        //      public Angi angi = a;
        //      public List<Huuhduud> huuhduud = huuhedCollection;
        // } гэсэнтэй төстэй бүтэцтэй байгаа

        Console.WriteLine(r.Angi + " dotor baigaa huuhduudiin jagsaalt: ");

     
        // r.Huuhduud тэнцүү huuhedCollection учраас r мөрөн дэх харгалзах хүүхдүүдийг хэвлэх
        foreach (var h in r.Huuhduud)
        {
            Console.WriteLine("   " + h.HuuhdiinNer);
        }
}

jishee


from a in Audits
join u in Users on a.UserId equals u.UserId
group a by a.UserId into g
let score = g.Sum(x => x.Score)
orderby score descending
select new { UserId = g.Key, Score = score };

No comments: