如何使用基于具有非唯一值的属性的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:已修改。谢谢。 –