【问题标题】:Loop Through List of Objects until condition is met, then set value of subsequent objects until the condition is met again循环遍历对象列表直到满足条件,然后设置后续对象的值直到再次满足条件
【发布时间】:2020-04-25 10:01:25
【问题描述】:

我有一个 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。

这个过程一直持续到列表中的所有项目都有价格为止。

这个问题是一个非常具体的案例,我试图想出最好的提问方式。抱歉不清楚。

【问题讨论】:

  • 你看过Linq中的SkipWhile()TakeWhile()
  • 感谢您的回复,我会调查的。

标签: c# linq loops


【解决方案1】:

尝试以下:

            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);
                }
            }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-19
    • 2021-12-24
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多