我有一个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/>
}
给出了以下输出 1 stk, 1 stk, 1 stk, 12 stk, 8 stk, 8 stk, 1 stk
我想将其输出为 1 stk, 12 stk, 8 stk
如何实现此输出请帮助
答案 0 :(得分:2)
你可以这样做,然后采取可枚举的集合
Parent.find(req.query.id).populate('children').exec(function(err, parent){
console.log('children.length = ' + parent[0].children.length);
});
这将为您提供一个数量项目
答案 1 :(得分:1)
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/>
}
}
答案 2 :(得分:0)
使用Distinct()
之类的:
foreach (LoopItem i in GetLoop("Product.Prices").Distinct())
应该工作。