查询体必须与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 
     }); 
+0

,这确实会产生相同的错误消息? – SlimsGhost

+0

@SlimsGhost,在这一个没有错误 – Chris

虽然有可能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