5

设置

我有这三个清单。

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

token将在列表中的一个完整tokens列表。

{"<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>"}

sets列表看起来像这样。

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

我想遍历每个tokenintokens并删除token包含set.

例子

tokens列表有几个token元素。一个token(比如 token1)有一个像这样的元素。

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

另一个token(比如 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>", ...}

假设sets列表被修改为仅包含{"ARB", "GTC", "M12"}.

我将如何遍历每个tokenintokens并删除包含 in 中任何字符串元素的字符串元素sets?那么,在该过程之后,token1 将没有上面的那个元素,而 token2 将只有第二个呈现的元素?

我试过的

这将遍历每个tokenin并删除包含 string 的tokens任何元素。token"GTC"

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

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

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

谢谢您的帮助。

4

1 回答 1

5
foreach (var token in tokens)
{
    token.RemoveAll(str => sets.Any(s => str.Contains(s)));
}
于 2013-04-22T00:59:49.343 回答