微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如果List字符串元素包含来自另一个List的字符串元素,如何删除它?

建立

我有这三个清单.

List<List<string>> tokens = new List<string>();
List<string> token = new List<string>();
List<string> sets = new List<string();

一个完整的令牌列表,它将位于令牌列表中.

{"<card>"",
 "    <name>Domri Emblem</name>",
 "    <set picURL="http://magiccards.info/extras/token/Gatecrash/Domri-Rade-Emblem.jpg" picURLHq="" picURLSt="">GTC</set>",
 "    <color></color>",
 "    <manacost></manacost>",
 "    <type>Emblem</type>",
 "    <pt></pt>",
 "    <tablerow>0</tablerow>",
 "    <text></text>",
 "    <token>1</token>",
 "</card>"}

集合列表看起来像这样.

{"ARB", ..., "AVR", ..., "GTC", ..., "ZEN"}

我想遍历令牌中的每个令牌并删除包含集合中任何元素的令牌中的每个字符串.

令牌列表包含一些令牌元素.一个标记(比如token1)有一个这样的元素.

{..., "    <set picURL="http://magiccards.info/extras/token/Gatecrash/Domri-Rade-Emblem.jpg" picURLHq="" picURLSt="">GTC</set>", ...}

一个令牌(比如token2)有这两个元素.

{..., "    <set picURL="http://magiccards.info/extras/token/magic-2012/pentavite.jpg" picURLHq="" picURLSt="">M12</set>",
"    <set picURL="http://magiccards.info/extras/token/player-rewards-2004/pentavite.jpg" picURLHq="" picURLSt="">MI</set>", ...}

假设集合列表被修改为仅包含{“ARB”,“GTC”,“M12”}.

我如何遍历标记中的每个标记删除包含集合中任何字符串元素的字符串元素?那么,在那个过程之后,token1上面没有那个元素,而token2只会有第二个呈现的元素?

我曾经尝试过什么

这将遍历标记中的每个标记,并删除包含字符串“GTC”的标记中的任何元素.

foreach (var token in tokens)
{
    token.RemoveAll(str => str.Contains("GTC"));
}

我查看了其他一些问题但发现了这个问题,但它不起作用.

foreach (var token in tokens)
{
    token.RemoveAll(sets.Contains);
}

谢谢您的帮助.

解决方法:

foreach (var token in tokens)
{
    token.RemoveAll(str => sets.Any(s => str.Contains(s)));
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。