2010-12-30 8 views
2

私はEntity Frameworkで私の最初のプロジェクトに取り組んでおり、EntityDataSourceとListViewで高度な情報を表示するのが難しいです。 2つのエンティティ与え例えばASP.Net EntityFrameworkとリストビューでのSum()とCount()でのEvalの使用

、:

項目
名前
価格

注文

アイテム<が----アイテムへのナビゲーションプロパティに含まれている番号注文

私はすべての注文のリストを、注文の総数と注文のすべての商品の価格の合計を持つ列で表示します。

私は次のように構成されたEntityDataSource使用しています:ListViewコントロールのItemTemplateには

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

を次のように、私は注文番号を書き込むことができます。

<%# Eval("Number") %> 

私はトラブルどのように把握していました注文のアイテムの数を表示します。 EntityDataSourceのselect文でItems.Count()関数を使ってみましたが、うまくいきませんでした。最終的に私はItemTemplateで次のことができることを理解しました:

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

今、私はアイテムの合計を取得しようとしています。私はここで立ち往生している。私は

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

を使用して試してみましたが、私は次のエラーを取得する:私は合計がEntityCollection(うち)の方法であることを知っているので

Public member 'Sum' on type 'EntityCollection(Of Item)' not found.

は、これは私を混乱させる。次のように

私の二つの質問があります:私は、アイテムが正しくカウント

を取得していますか?

商品の価格の合計を取得するにはどうすればよいですか?

答えて

2

I know that Sum is a method of EntityCollection(Of)

No it isn't

Enumerableで定義されている拡張方法です。 System.Linqは含まれていない可能性があります。

+0

ああ。それはそれを説明する。代わりに私のコードの中に関数を作成し、EntityCollectionをパラメータとして渡しています。そこから私は合計を実行して総価格に達することができます。 – mgolus

1

使用この '<%の#エバール( "Items.Count")%>'

0

それを行うための正しい方法は、このようなものです:

<%# ((ICollection<Item>)Eval("Items")).Sum(i => i.Price) %> 
関連する問題