调用在foreach中返回Int32的方法

时间:2014-12-02 16:27:35

标签: c# asp.net-mvc-5

我在MVC 5中寻求了解你的帮助。我已经阅读了一些以前的帖子,但我没有得到我需要的答案。

我有Store有很多项目,但项目可以是不同的类型。我想在商店/索引视图中显示每个商店的所有商店的表格以及不同商品类型的数量。

e.g。 (布局只是为了简单和清晰) 商店-----#A -----·B -----·C 阿尔德----- ----- 10 22 43 ----- Birmh ----- ----- 07 ----- 11 89 等

除了Store和Item模型,我还有一个StoreDetails ViewModel,它包含Storename和count。

在商店/索引控制器中,我构建一个StoreDetails列表,传递给商店/索引视图。

要计算我在Store / Index控制器中执行以下操作的计数:

    public ActionResult Index()
    {
        var model = db.Stores
                      .OrderBy(s => s.StoreName)
                      .Select(s => new StoreDetails
                                   {
                                       ID = s.ID,
                                       Name = s.StoreName,
                                       CountOfItems = s.Items.Count(),
                                       CountOfBigType = BigCount(s.ID)
                                       //other counts if i can get this one working
                                   });
        return View(model);
    }

我的BigCount方法是:

    public int BigCount(int storeid)
    {
        var big = from t in db.Items
                  where t.StoreID == storeID && t.Size > 100
                  select t;

        return big.Count();
    }

当CountOfBigType()未显示但是一旦添加后,CountOfItems在视图中正确显示我得到了Linq to Entities错误。

有什么建议吗?

亲切的问候 克雷格

1 个答案:

答案 0 :(得分:3)

您是否无法像下面那样简单地修改初始LINQ查询并获得相同的结果:

 public ActionResult Index()
 {
      var model = db.Stores.OrderBy(s => s.StoreName)
                  .Select (s => new StoreDetails {
                       ID = s.ID,
                       Name = s.StoreName,
                       CountOfItems = s.Items.Count(),
                       CountOfBigType = s.Items.Count(x=>x.Size > 100) <--
                       //other counts if i can get this one working
                       });
      return View(model);
 }