ジェネリックタイプTの何百万ものアイテムを含むコレクションがあります。このリストは変更されないと仮定します。タイプTのフィールドのサブセットを使用して、さまざまなタイプの検索を実行したいと考えています。フィールドが1つしかないものもあれば、2つ以上のフィールドがあるものもあります。ほとんどの場合、検索ごとに複数の結果が返されます。
この答えは私が望むものに非常に近いですが、それは1つのフィールドだけの検索でのみ機能します:
実際、投稿したリンクと同じようにコードを使用できます。次のように呼び出します。
var fc = new FastCollection<Product>(products);
fc.AddIndex(item => new { UserName = item.UserName, Title = item.Title});
string userName = "...";
string title = "...";
// finds items where UserName == userName and Title == title
var items =
fc.FindValue(
item => new { UserName = item.UserName, Title = item.Title},
new { UserName = userName , Title = title })
.ToArray();
このコードは、匿名型を使用して、複数のプロパティの集合である単一の「プロパティ」を作成します。
これは、RavenDBでインデックスがどのように実行されるかを思い出させます。