查询体必须与SELECT子句或使用拉姆达在LINQ查询一组子句末表现
问题描述:
我有这个在这里的LINQ查询中使用lambda表达式和它抛出一个错误查询体必须与SELECT子句或使用拉姆达在LINQ查询一组子句末表现
查询体必须以结束SELECT子句或group子句
这里是问题
var query = from county in HWC.StateCounties.Where(w => w.StateID == id).Select(s => new CountyList
{
CountyID = s.StateCountyID,
CountyName = s.CountyName
});
我甚至尝试在年底加入.Tolist(),并得到了同样的错误查询。
为什么会发生这种情况,当我清楚地有一个选择条款?
答
我做我的查询错误,查询应该是这样的,而不是
var query = HWC.StateCounties.Where(w => w.StateID == id).Select(s => new
{
s.StateCountyID,
s.CountyName
});
答
虽然有可能LINQ和扩展方法相结合,LINQ查询总是需要与C#select
结束(在VB这不是必需的)。 也许这是一个有趣的问题,但我更喜欢Linq的扩展方法,因为它使代码更具可读性,因为所有大括号都被删除了。
您的查询将看起来像
var query =
from county in HWC.StateCounties
where county.stateID == id
select new
{
county.StateCountyID,
county.CountyName,
};
如果要合并的查询将如下所示:
var query =
from county in HWC.StateCounties.Where(s => s.stateID == id)
select new
{
county.StateCountyID,
county.CountyName,
};
+0
我也喜欢在扩展方法上使用Linq。但是,能够同时写作的总是好事,你永远不知道什么时候你会碰到一个比另一个更喜欢的项目 – Chris
,这确实会产生相同的错误消息? – SlimsGhost
@SlimsGhost,在这一个没有错误 – Chris