无法将类型'string'隐式转换为'bool'linq查询

时间:2012-06-09 09:45:38

标签: entity-framework linq-to-entities

我有这个LINQ查询:

 var query = from row in context.data_vault
             group row by row.STATE into g
             select new {
                 State = g.Key,
                 Count = g.Sum(row => row.SCORE),
                 Phones = g.Count(c => c.PHONE)
             };

执行时,我收到以下错误:

  

无法在g.Count隐式转换类型'string'为'bool'(c =>   c.PHONE)

3 个答案:

答案 0 :(得分:1)

Count方法需要一个函数返回一个布尔值。看起来你的PHONE属性是一个字符串,所以这不起作用。

你到底在想什么?

也许你想要所有非空电话号码或类似的东西,试试

g.Count(c => !String.IsNullOrWhitespace(c.PHONE))

答案 1 :(得分:0)

你想算什么?如果您想要计算非空或非空电话号码,则需要使用g.Count(c => String.IsNullOrEmpty(c.PHONE)==false )

答案 2 :(得分:0)

Count()期待一个谓词 - 返回一个布尔值。你得到它返回一个字符串。我不确定你在追求什么,但是如果你想计算非空白手机的数量,你可以将其修改为

 var query = from row in context.data_vault
             group row by row.STATE into g
             select new {
                 State = g.Key,
                 Count = g.Sum(row => row.SCORE),
                 Phones = g.Count(c => c.PHONE != "")
             };