Использование Eval с Sum () и Count () с ASP.Net EntityFramework и ListView - PullRequest
2 голосов
/ 30 декабря 2010

Я работаю над своим первым проектом с Entity Framework и испытываю некоторые трудности с отображением расширенной информации с EntityDataSource и ListView.

Например, учитывая две сущности:

Позиция
Имя
Цена

Заказ
Номер
Элементы <---- Навигация по элементам, содержащимся в Заказе </p>

Я хочу отобразить список всех заказов со столбцом с общим количеством товаров в заказе и столбцом с суммой цен всех товаров в заказе.

Я используюEntityDataSource сконфигурирован следующим образом:

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

В ItemTemplate ListView я могу написать номер заказа следующим образом:

<%# Eval("Number") %>

У меня возникли проблемы с поиском способа отображения счетчикапредметов в заказе.Я пытался использовать функцию Items.Count () в операторе select в EntityDataSource, но это не сработало.В конце концов я понял, что могу сделать следующее в своей ItemTemplate:

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

Теперь я застрял, пытаясь получить сумму предметов.Я застрял здесь.Я пытался использовать

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

, но получаю следующую ошибку:

Открытый член 'Sum' для типа 'EntityCollection (Of Item)' не найден.

Это смущает меня, потому что я знаю, что Sum - это метод EntityCollection (Of).

У меня два вопроса:

Правильно ли я получаю количество предметов?

Как мне узнать сумму цен на предметы?

Ответы [ 3 ]

2 голосов
/ 30 декабря 2010

Я знаю, что Sum - это метод EntityCollection (Of)

Нет, это не .

Это метод расширения, определенныйна Enumerable.Возможно, вы не включили System.Linq.

1 голос
/ 02 апреля 2013

используйте это '<% # Eval ("Items.Count")%>'

0 голосов
/ 25 ноября 2013

Правильный способ сделать это так:

<%# ((ICollection<Item>)Eval("Items")).Sum(i => i.Price) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...