加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 在List中添加项目的简短方法?

发布时间:2020-12-15 19:51:04 所属栏目:百科 来源:网络整理
导读:如果除了foreach循环和新的集合创建之外还有任何简短的方法在现有List中的特定对象之后添加对象? 举个例子: “艾米”,“杰里”,“贝”,“艾米”,“杰克”. 我希望在每个“amy”之后添加“simon” 解决方法 您可以使用 Linq执行此操作. foreach (var item i
如果除了foreach循环和新的集合创建之外还有任何简短的方法在现有List中的特定对象之后添加对象?

举个例子:

“艾米”,“杰里”,“贝”,“艾米”,“杰克”.
我希望在每个“amy”之后添加“simon”

解决方法

您可以使用 Linq执行此操作.

foreach (var item in values
          .Select((o,i) => new { Value = o,Index = i })
          .Where(p => p.Value == "amy")
          .OrderByDescending(p => p.Index))
{
    if (item.Index + 1 == values.Count) values.Add("simon");
    else values.Insert(item.Index + 1,"simon");
}

使用foreach但您可以将其放入扩展方法以保持代码清晰.

扩展方法

您可以轻松地将其放入扩展方法中.

public static void AddAfterEach<T>(this List<T> list,Func<T,Boolean> condition,T objectToAdd) 
{
    foreach (var item in list.Select((o,Index = i }).Where(p => condition(p.Value)).OrderByDescending(p => p.Index))
    {
        if (item.Index + 1 == list.Count) list.Add(objectToAdd);
        else list.Insert(item.Index + 1,objectToAdd);
    } 
}

现在来电:

List<String> list = new List<String>() { "amy","jerry","tony","amy","jack" };
list.AddAfterEach(p => p == "amy","simon");

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读