首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linq RemoveAll输出?

Linq RemoveAll输出?
EN

Stack Overflow用户
提问于 2020-07-06 11:07:32
回答 5查看 186关注 0票数 0

是否有一种方法可以找到使用RemoveAll() Linq方法删除哪些元素?

如果满足特定的条件,我想记录哪些元素被删除了。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-07-06 11:10:41

RemoveAll不是LINQ方法,而是在特定集合(例如List)上定义的方法。对于List,它接受谓词委托,您可以将其定义为语句lambda:

代码语言:javascript
复制
new List<int> { 1 }
    .RemoveAll(i => 
    {
        var toRemove = true; // your logic
        if (toRemove)
        {
            Console.WriteLine(i); // "log"
        }
        return toRemove;
    })
票数 2
EN

Stack Overflow用户

发布于 2020-07-06 11:11:28

List<T>.RemoveAll()不报告它删除了什么,只报告它删除了多少项,所以您必须自己编写一些东西。因此,与其:

代码语言:javascript
复制
list.RemoveAll(l => l.Foo == 42);

你自己做吧:

代码语言:javascript
复制
foreach (var l in list.ToList())
{
    if (l.Foo == 42)
    {
        // log: removing list
        list.Remove(l);
    }
}

或者将其移动到方法中,并将其作为谓词传递:

代码语言:javascript
复制
public static void Main()
{
    var list = new List<string> { "11", "22", "33", "42" };
    
    list.RemoveAll(ToRemove);
    
    Console.WriteLine(string.Join(", ", list));
}

private static bool ToRemove(string s)
{
    if (s == "42")
    {
        Console.WriteLine($"Removing '{s}'");
        return true;
    }
    
    return false;
}
票数 1
EN

Stack Overflow用户

发布于 2020-07-06 11:30:38

1-保留原始名单

代码语言:javascript
复制
var originalList = list.ToList();

2-删除项目表单列表

代码语言:javascript
复制
list.RemoveAll(u => u.Id == 1);

3-删除元素

代码语言:javascript
复制
var removedList = originalList.Except(list).ToList();

我希望你觉得这有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62754757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档