C# 使用LINQ对项目列表应用回调

C# 使用LINQ对项目列表应用回调,c#,linq,list,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)

我试图根据是否匹配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;
    }
}
类集合{
公共列表项{get;private set;}
公共集合修改(Func查询、Func回调){
Items=Items.Where(查询).Select(回调).ToList();
归还这个;
}
}

但如果不匹配,则会从列表中删除项目。我想跳过这个项目,把它留在列表中。我怎样才能做到这一点?

我想你可以做到:

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

使用两个变量而不是一个。您有Items=Items。其中(…),因此您失去了原始数据。让输出变量有一个不同的名称。那么我如何将其应用于原始项目?你不能既吃蛋糕又吃蛋糕。除非添加另一个在找到匹配项时设置的属性,否则不能将旧值和新值保留在单个变量中。