gpt4 book ai didi

c# - 如何根据多个条件并使用 linq 从通用列表中删除项目

转载 作者:可可西里 更新时间:2023-11-01 07:53:44 24 4
gpt4 key购买 nike

我有两个列表,一个包含 url,另一个包含所有 MIME 文件扩展名。我想从第一个列表中删除所有指向此类文件的 url。

示例代码:

List<string> urls = new List<string>();
urls.Add("http://stackoverflow.com/questions/ask");
urls.Add("http://stackoverflow.com/questions/dir/some.pdf");
urls.Add("http://stackoverflow.com/questions/dir/some.doc");

//total items in the second list are 190
List<string> mime = new List<string>();
mime.Add(".pdf");
mime.Add(".doc");
mime.Add(".dms");
mime.Add(".dll");

删除多个项目的一种方法是:

List<string> result = urls.Where(x => (!x.EndsWith(".pdf")) && (!x.EndsWith(".doc")) && (!x.EndsWith(".dll"))).ToList();

但是,我的第二个列表中有 190 多个扩展名。

问题 - 我可以用一个衬里从第一个列表中删除项目还是使用 foreach 循环是唯一的方法?

最佳答案

如果您想创建一个新列表,其中只有符合您条件的项目:

List<string> result = urls.Where(x => !mime.Any(y => x.EndsWith(y))).ToList();

如果你真的想从源中删除项目,你应该使用RemoveAll:

urls.RemoveAll(x => mime.Any(y => x.EndsWith(y)));

关于c# - 如何根据多个条件并使用 linq 从通用列表中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30522843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com