Foreach循环和lambda表达式

时间:2016-11-07 18:21:34

标签: c# foreach lambda

我有以下模型类:

public class Promotion
{
     public Offers Offers { get; set; }    
}
public class Offers
{
    public List<PromotionOffer> Offer { get; set; }
}
public class PromotionOffer
{
    public string CategoryName { get; set; }
    public List<Product> Product { get; set; }
}

public class Product
{
    public string ProductName { get; set; }
}

我有Promotion个对象和一个字符串allProducts

Promotion promotion = promotion;
string allProducts = string.Empty;

我想在ProductName的所有产品中分配和附加CategoryName == "Premium"。 是否可以使用lambda表达式实现此目的?或者也需要一个foreach循环?请指导,我怎么能实现这个目标?

2 个答案:

答案 0 :(得分:4)

promotion.Offers
         .Offer
         .Where(o => o.CategoryName == "Premium")
         .SelectMany(o => o.Product)
         .ToList()
         .ForEach(n => n.ProductName = n.ProductName + "AppendedString");

如果您想在没有foreach循环的情况下将其淘汰,可以使用List的{​​{1}}方法以及LINQ

如果您实际上只想构建这些产品名称的字符串,请使用:

ForEach

答案 1 :(得分:3)

可以使用System.LinqString.Join

来实现
public static string ProductNameList(Promotion promotion, string category) {
    var products = promotion.Offers
        .Where(x => x.CategoryName == category)
        .SelectMany(x => x.Product)
        .Select(x => x.ProductName);
    return String.Join(", ", products);
}}