【问题标题】:WebMatrix - Count within a foreach loopWebMatrix - 在 foreach 循环中计数
【发布时间】:2014-01-14 16:45:44
【问题描述】:

我有一个 foreach 循环,可以在我的网站上显示我的所有属性。

在该 foreach 循环中,我想计算每个属性有多少评论。我在将变量传递给循环时遇到了麻烦。这是我的代码:

foreach(var row in queryResults){
var propertycount = db.Query("SELECT * FROM Property_Reviews WHERE PropertyID = @0", row.PropertyID);
var counter = propertycount.Count();
    <p>Property Name: @row.PropertyName
    <p>Number of Reviews: @counter
}

知道我哪里出错了吗?

目前,此代码与

错误

不可调用的成员“System.Collections.ObjectModel.ReadOnlyCollection.Count”不能像方法一样使用。

【问题讨论】:

    标签: sql razor foreach webmatrix


    【解决方案1】:

    尝试删除计数后的括号,即

    propertycount.Count
    

    【讨论】:

      【解决方案2】:

      您无需进行查询然后获取“count”属性

      你可以直接做一个“SELECT COUNT”:

      var counter = db.Query("SELECT count(*) as counterField as myCountFROM Property_Reviews WHERE PropertyID = @0", row.PropertyID)[0].counterField;
      <p>Number of Reviews: @counter </p>    
      

      var result = db.Query("SELECT count(*) as counterField as myCountFROM Property_Reviews WHERE PropertyID = @0", row.PropertyID)[0].counterField;
      
      var counter = result[0].counterField;
      
      <p>Number of Reviews: @counter </p>
      

      【讨论】:

      • 我先试过了。页面没有错误,但不是返回计数,而是在每个 foreach 项目中返回“System.Collections.ObjectModel.ReadOnlyCollection`1[System.Object]”?
      • 尝试使用 var counter = db.Query("SELECT count(*) as myCount FROM Property_Reviews WHERE PropertyID = @0", row.PropertyID)[0].myCount;
      • 感谢 Gonzalo,这很有效,也让我的代码更简单。我只是想弄清楚它为什么会起作用哈哈
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-21
      • 1970-01-01
      • 1970-01-01
      • 2011-05-19
      • 2019-01-20
      相关资源
      最近更新 更多