有条件的foreach

时间:2015-12-12 13:14:16

标签: c# asp.net

我有

class Item
{
    public string Id {get;set;}
}

和此代码

public void(List<string> sd)        
{
    List<Item> newitems = new List<Item>();
    foreach(var item in sd)
    {
        newItems.Add(new Item { Id = item});
    }
}

如果sd包含十个以上的项目,我应该创建新对象List<Item>并使用11项中的值对其进行初始化。

做得好多少?

2 个答案:

答案 0 :(得分:1)

您似乎想要从Item列表中创建string列表,您可以使用Select()创建列表而不是foreach。然后,您只需要split the list into sublists

var allItems = sd.Select(id => new Item { Id = id });
var subLists = Split(allItems);

您可以使用Split() method in this answer

public static List<List<object>> Split(List<object> source)
{
    return source
        .Select((x, i) => new { Index = i, Value = x })
        .GroupBy(x => x.Index / 10)
        .Select(x => x.Select(v => v.Value).ToList())
        .ToList();
}

答案 1 :(得分:0)

我是C ++程序员所以请原谅任何错误的语法,但是这里你可以使用currentList的引用,这个引用随着每次填充时创建一个新列表而变化,使用{{ 1}} if中的条件。

foreach

如果我的语法有误,请随时修改并更正我的答案。