另一个“查询正文必须以选择子句或组子句结尾”



这个查询确实有效,但我正在尝试将这两个步骤合并为一个查询。

var query1 = from b in db.GetTable<Boats>()
             from o in db.GetTable<Offices>()
             from u in db.GetTable<Users>()
             .Where
             (u =>
              u.UserId == b.Handling_broker &&
              o.Office == b.Handling_office &&
              b.Status == 2 &&
              officesToInclude.Contains(b.Handling_office)
             )
             select new
             {
                hOffice = o.Name,
                bName = u.Name
             };
var query2 = query1.GroupBy(t => new { office = t.hOffice, name = t.bName })
          .Select(g => new { Office = g.Key.office, Name = g.Key.name, Count = g.Count() });

如果我尝试使用以下查询组合这两个查询,它会给我"查询正文必须以选择子句或组子句结尾"错误。

var query1 = from b in db.GetTable<Boats>()
             from o in db.GetTable<Offices>()
             from u in db.GetTable<Users>()
             .Where
             (u =>
              u.UserId == b.Handling_broker &&
              o.Office == b.Handling_office &&
              b.Status == 2 &&
              officesToInclude.Contains(b.Handling_office)
             )
            .GroupBy(t => new { office = t.Office, name = t.Name })
            .Select(g => new { Office = g.Key.office, Name = g.Key.name, Count = g.Count() });

我想我必须添加一个选择的东西,但我无法弄清楚是什么。谁能帮忙?

查询必须包含select子句。.Where(...).GroupBy(...).Select(...)仅在db.GetTable<Users>().像这样:

var query1 = from b in db.GetTable<Boats>()
             from o in db.GetTable<Offices>()
             from u in db.GetTable<Users>().Where(u => u.UserId == b.Handling_broker &&
                                                       o.Office == b.Handling_office &&
                                                       b.Status == 2 &&
                                                       officesToInclude.Contains(b.Handling_office))
                         .GroupBy(t => new { office = t.Office, name = t.Name })
                         .Select(g => new { Office = g.Key.office, Name = g.Key.name, Count = g.Count() })
             select new { /* Desired properties */};

但我认为您正在寻找类似的东西:

var result = from b in db.GetTable<Boats>()
             from o in db.GetTable<Offices>()
             from u in db.GetTable<Users>()
             where u.UserId == b.Handling_broker &&
                 o.Office == b.Handling_office &&
                 b.Status == 2 &&
                 officesToInclude.Contains(b.Handling_office))
             group 1 by new { t.Office, t.Name } into g
             select new { Office = g.Key.Office, Name = g.Key.Name, Count = g.Count() };

最新更新