如何使用基於具有非唯一值的屬性的lambda表達式來快速查找大集合的多個值?根據屬性快速從一組中選擇元素
樣品情況下(沒有性能優化):
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.
如果標題是獨一無二的,它會很容易通過使用IDictionary
或HashSet
以優化性能。但是那些值不是唯一的情況呢?
根據'標題'排序的二叉搜索樹可能(如果這是您需要查找的唯一屬性) – Magnus
您的最後一個查詢不會編譯。你的意思是'string.IsNullOrEmpty(c.Title)'? – svick
@svick:已修改。謝謝。 –