簡體   English   中英

Linq:group by不起作用

[英]Linq: group by doesn't work

我有一個讓我的GROUP BY正常工作的問題。 有人能看出原因嗎?

public void MonthlyTurnover(int year, int month) {
            var q1 = (from sp in _db.Species
                from p in _db.Pets
                from b in _db.Bookings.Where(x => x.ExpectedArrivalTime.Year == year &&
                    x.ExpectedArrivalTime.Month == month)
                where p.SpeciesId == sp.Id && b.PetId == p.Id && b.PetId == p.Id
                select new {sp.SpeicesName, Sum = b.Services.Sum(i => i.Price)}).ToList();

            foreach (var v in q1) {
                Console.WriteLine(v);
            }
}

我得到的沒有分組

在此輸入圖像描述

public void MonthlyTurnover(int year, int month) {
            var q1 = (from sp in _db.Species
                from p in _db.Pets
                from b in _db.Bookings.Where(x => x.ExpectedArrivalTime.Year == year &&
                    x.ExpectedArrivalTime.Month == month)
                where p.SpeciesId == sp.Id && b.PetId == p.Id && b.PetId == p.Id
                select new {sp.SpeicesName, Sum = b.Services.Sum(i => i.Price)})
                .GroupBy(x => new{x.SpeicesName, x.Sum}).ToList();

            foreach (var v in q1) {
                Console.WriteLine(v.Key);
            }
}

我得到的是什么

在此輸入圖像描述

我想要什么......

在此輸入圖像描述

只按SpeicesName ,試試這個:

var q1 = (from sp in _db.Species
                from p in _db.Pets
                from b in _db.Bookings.Where(x => x.ExpectedArrivalTime.Year == year &&
                    x.ExpectedArrivalTime.Month == month)
                where p.SpeciesId == sp.Id && b.PetId == p.Id && b.PetId == p.Id
                select new {sp.SpeicesName, Sum = b.Services.Sum(i => i.Price)})
                .GroupBy(x => x.SpeicesName).Select(g=>new {SpeicesName=g.Key,Sum=g.Sum(e=>e.Sum)}).ToList();

不要按Sum ...分組,只按物種名稱分組。

...
.GroupBy(x => x.SpeicesName).ToList();

現在你已經有了一系列的組,其中關鍵是物種名稱。 您可以顯示物種名稱(一次),然后匯總所有個別總和。

foreach (var v in q1)
{
    Console.WriteLine("{0}: {1}", v.Key, v.Sum(x => x.Sum)); // "Dog: 7500", "Cat: 3500", etc
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM