0
什麼是按照給定示例中的屬性查找產品的快速方法?我有一個包含3000個產品的列表,每個列表都有12個屬性對象,如示例中所示。我需要能夠使用n個屬性快速查找產品。通過T2 []在T1 []中找到T1的有效方法其中T2 []是T1上的屬性?
public class Test
{
public class ProductProperty
{
public string Name { get; set; }
public string Value { get; set; }
public ProductProperty() { }
public ProductProperty(string name, string value)
{
this.Name = name;
this.Value = value;
}
}
public class Product
{
public string ProductName { get; set; }
public ProductProperty[] Properties { get; set; }
}
public static void Main(string[] args)
{
List<Product> models = new List<Product>()
{
new Product() { ProductName = "Test1", Properties = new ProductProperty[] { new ProductProperty("title", "car"), new ProductProperty("length", "5") } },
new Product() { ProductName = "Test1", Properties = new ProductProperty[] { new ProductProperty("title", "car"), new ProductProperty("length", "7") } },
new Product() { ProductName = "Test1", Properties = new ProductProperty[] { new ProductProperty("title", "ship"), new ProductProperty("length", "9") } },
};
var findByProps = new ProductProperty[] { new ProductProperty("title", "car"), new ProductProperty("length", "7") };
// var product = find Product that has title=car and length=7
}
}
如果是隻有一次動作' FirstOrDefault'將起作用。如果您想多次這樣做,我建議您對您的收藏進行排序並使用二分查找。 – rraszewski
這很有趣!注意詳細說明「m => findByProps.All(m.Properties.Contains)」?什麼作爲參數傳遞給Contains? findByProps中的每個元素?是不是寫了「m => findByProps.All(prop => m.Properties.Contains(prop))」? –
是的,它是一樣的,但沒有額外的lambda。 Properties數組實例的'Contains'方法直接傳遞給'All'(擴展)方法,因此可以通過'All'中的每次迭代直接調用它。 –