又一个“查询正文必须以select子句或group子句结尾”
问题描述:
该查询确实有效,但我试图将两个步骤合并为一个查询。又一个“查询正文必须以select子句或group子句结尾”
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() });
如果我尝试使用下面的查询它给我的错误“查询体必须与SELECT子句或group子句结束”合并这两个查询。
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() };
谢谢,这工作。你的第二个版本给了我我想要的东西。在第一个(点符号)中,我无法弄清楚如何获得Count(),但第二个版本更易于理解。 – Gerry
@Gerry - 计数将在'u.'下,但这的确是我添加下面的代码片段的原因 - 这更好地解释了您在那里做了什么 –