使用LINQ将回调应用于项目列表

时间:2016-11-30 21:55:27

标签: c# linq list

我试图根据它们是否匹配LINQ Where查询来修改列表中的项目。

我试过这样做:

class Collection<T> {

    public List<T> Items { get; private set; }

    public Collection<T> Modify(Func<T, bool> query, Func<T, T> callback) {
        Items = Items.Where(query).Select(callback).ToList();
        return this;
    }
}

但如果它不匹配,则会从列表中删除项目。我想跳过该项目,并将其留在列表中。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:3)

我认为你可以这样做:

 Items= Items.Select(e=>query(e)?callback(e):e).ToList();