0

LINQを使用して次の問題を解決できる簡単な解決策はありますか?

たとえば、 Dictionary<string,int> パスがあります。

次の要素を含む

   <"/abc/12", 13>

   <"/test/abc", 22>

   <"/stack/overflow/com", 43>

   <"/stack/exception", 4>

そして、 次の要素を含むList<string> フィルターがあります

   "/abc"
   "/stack/overflow"

そして、フィルターリストで提供された文字列からキーが始まらないパス辞書からそれらの要素を削除する必要があります。したがって、次の結果が得られるはずです。

   <"/abc/12", 13>

   <"/stack/overflow/com", 43>
4

2 に答える 2

2

Linq を使用できます。

var toDelete = paths
    .Where(kv => !filter.Any(f => kv.Key.StartsWith(f)));
foreach(var delete in toDelete.Reverse())
    paths.Remove(delete.Key);

デモ

于 2012-12-13T19:48:11.403 に答える
0

非linqウェイの場合

削除する新しいリストを作成する

パスを介してforeach.keys

そのループ内でforeachthroughfilter

key.contains(filter)----両方にtoupper()またはtolower()を追加したい場合は、toRemove
にキーを追加します

次に、foreach over toRemove呼び出しパス.remove(toRemoveStr);

于 2012-12-13T19:53:43.857 に答える