是否有一种方法可以找到使用RemoveAll() Linq方法删除哪些元素?
如果满足特定的条件,我想记录哪些元素被删除了。
发布于 2020-07-06 11:10:41
RemoveAll不是LINQ方法,而是在特定集合(例如List)上定义的方法。对于List,它接受谓词委托,您可以将其定义为语句lambda:
new List<int> { 1 }
.RemoveAll(i =>
{
var toRemove = true; // your logic
if (toRemove)
{
Console.WriteLine(i); // "log"
}
return toRemove;
})发布于 2020-07-06 11:11:28
List<T>.RemoveAll()不报告它删除了什么,只报告它删除了多少项,所以您必须自己编写一些东西。因此,与其:
list.RemoveAll(l => l.Foo == 42);你自己做吧:
foreach (var l in list.ToList())
{
if (l.Foo == 42)
{
// log: removing list
list.Remove(l);
}
}或者将其移动到方法中,并将其作为谓词传递:
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;
}发布于 2020-07-06 11:30:38
1-保留原始名单
var originalList = list.ToList();2-删除项目表单列表
list.RemoveAll(u => u.Id == 1);3-删除元素
var removedList = originalList.Except(list).ToList();我希望你觉得这有帮助。
https://stackoverflow.com/questions/62754757
复制相似问题