Foreach循环显示值';s如果重复,则只显示一次
本文关键字:显示 一次 循环 如果 Foreach | 更新日期: 2023-09-27 18:00:42
我有一个foreach循环,其中的值是重复的,我只想将值和输出值分组一次。我的代码看起来像这个
foreach (LoopItem i in GetLoop("Product.Prices")){
var priceQuantity = "";
if(i.GetInteger("Ecom:Product.Prices.Quantity") == 0){
priceQuantity = "1";
} else if(i.GetInteger("Ecom:Product.Prices.Quantity") >= 1){
priceQuantity = i.GetString("Ecom:Product.Prices.Quantity");
}
<!--@Translate(Ved, "VED")--> @priceQuantity <!--@Translate(Count, "STK")-->. - <!--@Translate(Count, "STK")-->. <!--@Translate(Price, "PRIS")-->. @i.GetValue("Ecom:Product.Prices.AmountFormatted")<br/>
}
它给出了以下输出1stk,1stk,1stk,12stk,8stk,8stk,1 stk
我想将其输出为1stk,12stk,8 stk
如何实现此输出请帮助
你可以这样做,先取可枚举集合,然后取
var collection = GetLoop("Product.Prices");
var firstItemsInGroup = from b in collection
group b by b.Quantity into g
select g.First();
这将为您提供一个数量项目
var result = GetLoop("Product.Prices").GroupBy(x => x.Quantity).Select(x => x.First());
然后,您可以根据自己的条件打印结果集合。
foreach (LoopItem i in result){
var priceQuantity = "";
if(i.GetInteger("Ecom:Product.Prices.Quantity") == 0){
priceQuantity = "1";
} else if(i.GetInteger("Ecom:Product.Prices.Quantity") >= 1){
priceQuantity = i.GetString("Ecom:Product.Prices.Quantity");
}
<!--@Translate(Ved, "VED")--> @priceQuantity <!--@Translate(Count, "STK")-->. - <!--@Translate(Count, "STK")-->. <!--@Translate(Price, "PRIS")-->. @i.GetValue("Ecom:Product.Prices.AmountFormatted")<br/>
}
但你也可以用另一种方式,使用HashSet<T>
var sequence = GetLoop("Product.Prices");
var alreadyIn = new HashSet<T>();
foreach(var i in sequence)
{
if(alreadyIn.Add(i))// Returns false if item was already in set
{
if(i.GetInteger("Ecom:Product.Prices.Quantity") == 0){
priceQuantity = "1";
}else if(i.GetInteger("Ecom:Product.Prices.Quantity") >= 1){
priceQuantity = i.GetString("Ecom:Product.Prices.Quantity");
}
<!--@Translate(Ved, "VED")--> @priceQuantity <!--@Translate(Count, "STK")-->. - <!--@Translate(Count, "STK")-->. <!--@Translate(Price, "PRIS")-->. @i.GetValue("Ecom:Product.Prices.AmountFormatted")<br/>
}
}
使用类似于的Distinct()
foreach (LoopItem i in GetLoop("Product.Prices").Distinct())
应该有效。