2012-04-17 5 views
2

私はテーブル '資産'とカテゴリでいっぱいの 'ListView'(assetCategoriesListView)を持っています。LinqとListViewとContains

私は、カテゴリの選択ですべての資産を選択しようとしている:

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

しかし、使用できないことが含まれているようです。誰かが解決策を知っていますか?

+1

「Contains」を使用できますが、単純なタイプのリストのみが使用できます。http://wekeroad.com/2008/02/27/creating-in-queries-with-linq-to-sql/ – mellamokb

+2

あなたはどうしますか? – SLaks

答えて

1

あなたは時代遅れに悩まされています。 ListViewクラスは.NET 1.0からの日付で、ジェネリックが利用可能になるまでの暗い日です。 CheckedIndicesプロパティはListView.CheckedIndexCollection型であり、IEnumerableのみを実装し、IEnumerableでは実装しません。<>だから、Contains()はうまくいきません。

通常、Cast()拡張メソッドを使用して修正できます。しかし、CheckedIndicesはオブジェクトではなく整数を含んでいます。 CheckedItemsにはListViewItemが含まれています。そうでなければ、それらを「資産」にマップする方法は明確ではありません。ビューとは別のデータを保持することに重点を置いてください。

+0

これを試してみます: Assets test = dbLinqManager.db.Assets.Where(a =>(assetCategoriesListView.CheckedIndices.Cast ())には、(a.Category)が含まれています。 しかし、私はまだエラーがあります:s – Ziboo

+0

2番目の段落を忘れました。整数をカテゴリにマップしようとしています。 –

+0

myCategoriesはintの型です – Ziboo

関連する問題