如何用LINQ表达式替换foreach

本文关键字:替换 foreach 表达式 LINQ 何用 | 更新日期: 2023-09-27 18:28:13

可能重复:
如何使用LINQ Contains(string[])而不是Contains

假设我有以下对象

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重写第一个代码片段?

如何用LINQ表达式替换foreach

否,等效的LINQ形式是

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

大声说话:

选择arrayString中有任何一个字符串的所有产品包含在产品的CCD_ 2中。