1

我有这个 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(c => c.PHONE) 处将类型“字符串”隐式转换为“布尔”

4

3 回答 3

1

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

你到底想计算什么?

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

g.Count(c => !String.IsNullOrWhitespace(c.PHONE))
于 2012-06-09T09:50:59.027 回答
0

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

于 2012-06-09T09:51:17.727 回答
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 != "")
             };
于 2012-06-09T09:51:33.760 回答