Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq:group by不';行不通_C#_Linq - Fatal编程技术网

C# Linq:group by不';行不通

C# Linq:group by不';行不通,c#,linq,C#,Linq,我无法让我的团队正常工作。有人知道为什么吗 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 &&

我无法让我的团队正常工作。有人知道为什么吗

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);
            }
}

我从小组中得到了什么

我想要的是


不要按总和分组。。。只需按物种名称分组

...
.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
}

仅按
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();

谢谢,那正是我需要的:)谢谢,那正是我需要的:)