遍历对象列表,直到满足条件为止,然后设置后续对象的值,直到再次满足条件

时间:2020-04-25 10:01:25

标签: c# linq loops

我有一个ItemForSale()列表:

public class ItemForSale(){

public string Name {get;set;}
public bool OnSale {get;set;}
public int price {get;set;}
}

我有一个销售价:(由用户决定)

public int SalePrice {get;set;}

我需要遍历这些ItemForSale对象的列表。

如果某个对象为OnSale,则随后在列表中为每个对象将price设置为SalePrice。

直到下一个ItemForSale.OnSale = true。

此过程将继续进行,直到列表中的所有项目都具有价格为止。

这个问题是一个非常具体的情况,我试图思考提出此问题的最佳方法。抱歉,不清楚。

1 个答案:

答案 0 :(得分:0)

尝试以下操作:

            List<ItemForSale> items = new List<ItemForSale>() {
                new ItemForSale() { Name = "abc", OnSale = true},
                new ItemForSale() { Name = "def", OnSale = false },
                new ItemForSale() { Name = "ghi", OnSale = false},
                new ItemForSale() { Name = "jkl", OnSale = true},
                new ItemForSale() { Name = "mno", OnSale = false},
                new ItemForSale() { Name = "pqr", OnSale = true},
                new ItemForSale() { Name = "stu", OnSale = false},
                new ItemForSale() { Name = "vwx", OnSale = true},
                new ItemForSale() { Name = "yz", OnSale = true}
            };

            List<List<ItemForSale>> groups = new List<List<ItemForSale>>();

            List<ItemForSale> group = null;

            foreach (ItemForSale item in items)
            {
                if (item.OnSale)
                {
                    group = new List<ItemForSale>();
                    group.Add(item);
                    groups.Add(group);
                }
                else
                {
                    group.Add(item);
                }
            }