如何用LINQ表达式替换foreach

时间:2012-03-16 15:31:33

标签: c# linq select foreach

  

可能重复:
  How do I use LINQ Contains(string[]) instead of Contains(string)

假设我有以下对象

class Product
{ 
   public int ProductId { get; set; }
   public string ProductDesc { get; set; }
} 

string[] arrayString = new string []{"A", "B", "C", "D"};

List<Product> products = new List<product>();

这是代码:

var filteredProducts = new List<product>();
foreach(var searchString in arrayString)
{ 
   filteredProducts.Union(Products.Where(p => p.ProductDesc.Contains(searchString)));
}

相当于:

var filteredProducts = products.Where(p => p.ProductDesc.Contains(arrayString.Select(s => s).ToString()));

如果不是这样,那么如何使用LINQ重写第一个代码片段?

1 个答案:

答案 0 :(得分:8)

不,等效的LINQ表单是

var filteredProducts = products.Where(p =>
    arrayString.Any(s => p.ProblemDesc.Contains(s));

大声说话:

  

选择arrayString中任意一个字符串的所有产品   包含在产品的ProblemDesc