我有以下模型类:
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循环?请指导,我怎么能实现这个目标?
答案 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.Linq
和String.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);
}}