2012-04-26 12 views
1

私は約70,000のXMLエントリのデータベースを検索し、クエリに一致するアイテムを選択し、リストボックスに表示するアイテムを返すWindows Phoneプロジェクトを持っています。IEnumerableの高速操作ですか?

LINQを使用すると、実際の検索を妥当な時間(< 2秒)で実行することができます。しかし、大量のエントリを持つリストボックスをロードすると、むしろ不合理な時間がかかるようです。そのため、10個のアイテムを表示して、もっと見たい場合は、[次へ]を押すことを許可します。

私が抱えている問題は、IEnumerable型のオブジェクトに対して何らかの操作を実行すると完全に不合理な時間がかかることです。これには、Count、.Take(10)、および.ToList()が含まれます。これらの操作のそれぞれは、実行に約1分かかります。これは、私が書いているソフトウェアにとっては全く無理です。

最終的に、私は位置によってエントリに簡単にアクセスできる限り、データの形式は問わない。私はこのデータを簡単に出力できる解決策を探しています。

+0

組み込みデータベースはオプションですか?また、最初にList(IEnumerableが後で使用されるかどうか)オブジェクトの場合はどうでしょうか? IEnumerable操作は基になる型についていくらかスマートです。 –

+1

LINQクエリが実際に実行され、2秒かかりますか?遅延実行を見ている可能性があります:http://msdn.microsoft.com/en-us/library/bb943859.aspx – tbridge

+0

@pst:組み込みデータベースは理想的にはオプションではありません。私のプログラムは、XMLとして提供される政府データを使用します。私はむしろより良いフォーマットでデータの2番目のコピーを維持しないだろう、と私はむしろ、プログラムは、最新のデータをプルし、SQLiteまたは別のフォーマットに変換するために起動する最初の数分を費やすことはありません。 – tfreedman

答えて

0

あなたはこれを明示的に述べていませんが、あなたはXElementまたはXmlElementで操作していると仮定します。 XMLをオブジェクトに逆シリアル化する必要があります。 (あるXMLからXSDを生成できるツールがあり、XSDからクラスを取得できます)。

その後、LINQははるかに高速でなければならず、データのRAMも少なくてすみます。

これが正しくない場合は、質問を詳細に更新してください。

関連する問題