如何用LINQ表达式替换foreach

Cic*_*ami 1 c# linq foreach select

可能重复:
如何使用LINQ Contains(string [])而不是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>();
Run Code Online (Sandbox Code Playgroud)

这段代码是:

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

相当于:

var filteredProducts = products.Where(p => p.ProductDesc.Contains(arrayString.Select(s => s).ToString()));
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*Jon 8

不,等效的LINQ形式是

var filteredProducts = products.Where(p =>
    arrayString.Any(s => p.ProblemDesc.Contains(s));
Run Code Online (Sandbox Code Playgroud)

大声说话:

选择这在字符串中的任何一个产品都arrayString 包含内的产品的ProblemDesc.