2

テーブル「Assets」と、Categoriesで満たされた「ListView」(assetCategoriesListView)があります。

カテゴリを選択してすべてのアセットを選択しようとしています。

Assets myAsset = dbLinqManager.db.Assets.Where(a => assetCategoriesListView.CheckedIndices.Contains(a.Category)).First();

ただし、Containsは使用できないようです。誰かが解決策を知っていますか?

4

1 に答える 1

1

あなたは時代錯誤にとらわれています。ListView クラスは、ジェネリックが利用可能になる前の暗黒時代である .NET 1.0 にさかのぼります。CheckedIndices プロパティは ListView.CheckedIndexCollection 型であり、IEnumerable<> ではなく IEnumerable のみを実装します。これが、Contains() が機能しない理由です。

通常は、Cast() 拡張メソッドを使用して修正できます。ただし、CheckedIndices にはオブジェクトではなく整数が含まれます。CheckedItems には ListViewItems が含まれています。それ以外の場合、それらを「資産」にどのようにマッピングする予定かは明確ではありません。データをビューから分離することに重点を置いてください。

于 2012-04-17T02:38:33.377 に答える