Wie kann ich mehrere Werte einer großen Menge speichern, um sie schnell mit einem Lambda-Ausdruck auf der Grundlage einer Eigenschaft mit nicht eindeutigen Werten zu finden?
Beispielfall (nicht auf Leistung optimiert):
class Product
{
public string Title { get; set; }
public int Price { get; set; }
public string Description { get; set; }
}
IList<Product> products = this.LoadProducts();
var q1 = products.Where(c => c.Title == "Hello"); // 1 product.
var q2 = products.Where(c => c.Title == "Sample"); // 5 products.
var q3 = products.Where(c => string.IsNullOrEmpty(c.Title)); // 12 345 products.
Wenn der Titel eindeutig wäre, wäre es einfach, die Leistung durch die Verwendung von IDictionary
o HashSet
. Aber was ist mit dem Fall, dass die Werte nicht eindeutig sind?