簡體   English   中英

在 linq 查詢中選擇 max 或重寫方法鏈語法

[英]Selecting max in linq query or rewriting to method chain syntax

我設法打開了這個 SQL 查詢:

SELECT c.carId, c.Codename, count(c.CarId) as [CarCount],
  FROM [DbEfTesting].[dbo].[Cars] c
  left join Accessories a on c.CarId = a.CarId
  left join CarsPeople cp on cp.CarId = c.CarId
  left join People p on cp.PersonId = p.PersonId
  group by c.CarId, c.Codename

進入 LINQ 查詢:

var x = from c in _context.Cars
    join a in _context.Accessories on c.CarId equals a.Car.CarId
    join j in _context.CarsPeople on c.CarId equals j.CarId
    join p in _context.People on j.PersonId equals p.PersonId
    group c by new { c.CarId, c.Codename } into g
    select new VMCarAggregate()
    {
        CarId = g.Key.CarId,
        Codename = g.Key.Codename,
        CarCount = g.Count()
    };

但是現在我試圖包含一個最大值,例如 SQL,我迷路了:

SELECT c.carId, c.Codename, count(c.CarId) as [CarCount], max(a.AccessoryId) ...

我用谷歌搜索,找到了很多方法語法的答案。 如果我使用方法鏈語法,我知道我可以做這樣的事情:

_context.Accessories.Max(a => a.AccessoryId);

但我無法弄清楚如何在方法鏈語法中進行group by因此:

如何將該查詢轉換為方法語法?

或者

如何在 LINQ 查詢格式中對最大 a.AccessoryId 注入選擇?

嘗試一次以下代碼:

var x = from c in _context.Cars
                    join a in _context.Accessories equals a.Car.CarId
                    join j in _context.CarsPeople on c.CarId equals j.CarId
                    join p in _context.People on j.PersonId equals p.PersonId
                    group new { c.CarId, c.Codename, a.AccesoryId } by new { c.CarId, c.Codename } into g
                    select new
                    {
                        CarId = g.Key.CarId,
                        Codename = g.Key.Codename,
                        CarCount = g.Count(),
                        MaxAccesory = g.Max(z => z.AccesoryId)
                    };

暫無
暫無

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

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