5

設定

この3つのリストがあります。

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

tokenリストに含まれる1 つの完全な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"}

の各要素を調べて、 の要素のいずれかを含む の各文字列を削除tokenしたいと思います。tokenstokenset

tokensリストにはいくつかのtoken要素があります。1 つtoken(token1 など) には、このような要素があります。

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

別のtokenもの (token2 など) には、これら 2 つの要素があります。

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

それぞれの文字列要素を調べて、文字列要素のいずれかを含む文字列要素を削除するtokenにはどうすればよいですか? では、そのプロセスの後、token1 には上記の要素がなく、token2 には 2 番目に提示された要素しかありませんか?tokenssets

私が試したこと

tokenこれは各inを通過し、 string を含むtokensin の要素をすべて削除します。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 に答える