【问题标题】:Using Eval with Sum() and Count() with ASP.Net EntityFramework and ListView将 Eval 与 Sum() 和 Count() 与 ASP.Net EntityFramework 和 ListView 一起使用
【发布时间】:2010-12-30 19:43:47
【问题描述】:

我正在使用 Entity Framework 进行我的第一个项目,并且在使用 EntityDataSource 和 ListView 显示高级信息时遇到了一些困难。

例如,给定两个实体:

物品
名称
价格

订购
号码
项目

我想显示所有订单的列表,其中一列包含订单中的商品总数,一列包含订单中所有商品的价格总和。

我正在使用如下配置的 EntityDataSource:

<asp:EntityDataSource ID="eds" runat="server" ConnectionString="name=NDSEntities"
DefaultContainerName="NDSEntities" EnableFlattening="False" Include="Items"
EntitySetName="Orders"></asp:EntityDataSource>

在ListView的ItemTemplate中,我可以写订单号如下:

<%# Eval("Number") %>

我不知道如何显示订单中的商品数量。我尝试在 EntityDataSource 的 select 语句中使用 Items.Count() 函数,但这不起作用。最终我发现我可以在我的 ItemTemplate 中执行以下操作:

<%# Eval("Items").Count() %>

现在我被困在试图获得项目的总和。我被困在这里。我尝试过使用

<%# Eval("Items").Sum(Function(i) i.Price)%>

但我收到以下错误:

未找到类型“EntityCollection(Of Item)”的公共成员“Sum”。

这让我很困惑,因为我知道 Sum 是 EntityCollection(Of ) 的一种方法。

我的两个问题如下:

我的项目计数是否正确?

我应该如何获取商品价格的总和?

【问题讨论】:

    标签: asp.net vb.net entity-framework data-binding


    【解决方案1】:

    我知道 Sum 是 EntityCollection(Of ) 的一个方法

    No it isn't.

    这是在Enumerable 上定义的扩展方法。你可能没有包含System.Linq

    【讨论】:

    • 啊。这就解释了。相反,我在后面的代码中创建了一个函数,并将 EntityCollection 作为参数传递。从那里我可以执行求和并得到总价。
    【解决方案2】:

    使用这个 ''

    【讨论】:

      【解决方案3】:

      正确的做法是这样的:

      <%# ((ICollection<Item>)Eval("Items")).Sum(i => i.Price) %>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-04-03
        • 1970-01-01
        • 2014-11-03
        • 1970-01-01
        • 1970-01-01
        • 2021-11-03
        • 1970-01-01
        • 2013-02-06
        相关资源
        最近更新 更多