2017-08-17 2 views
1

たとえば、ファイルに、"c:\test\file.txt""c:\store\etc.txt"のようなファイルパスが含まれているハッシュテーブルにファイルをデシリアライズします。次に、パス"c:\"または"c:\test"の一部がハッシュテーブルのいずれかのキーに含まれているかどうかを確認する必要があります。したがって、"C:\test\file.txt""C:\test"が含まれている場合は、返信trueとなります。ハッシュテーブルの値の一部に特定の文字列が含まれていないかどうかを確認します。C#

私は単純に素晴らしい作品下記のリスト(lstLoadedNodesが一覧である)でこれを行うことができます:私はする必要が全体の鍵なしハッシュテーブルでこれを行うための方法を見つけることができません

if (lstLoadedNodes.Any(s => s.Contains(e.Node.Path))) 

マッチした

if (checkedNodes.ContainsKey(e.Node.Path)) 

どのように私はhashtable.keyのどの部分を検索することができます:私はハッシュテーブルでこれをしようとすると

正確な文字列が一致した場合にのみtrueを返します(checkedNodesは私のハッシュテーブルですか)?希望は意味をなさない!

私はすべての値を最初にリストに渡してから、 "if contains.any"を実行することができます。これは現在実行中ですが、無意味なので、ハッシュテーブルをチェックしたいと思います。

ありがとうございます。

+0

あなたが独自のデータ構造を実装することができます。例えば。子がハッシュテーブルに保持されているツリー(「/」で分割されたパス)に基づいています。 – CShark

+1

'if(lstLoadedNodes.Any(s => s.Contains(e.Node.Path)))'は 'HashSet'で動作します。 – mjwills

+0

mjwills - それは何らかの理由で私のために働かない、 ".Any"というエラー。 – acurachris

答えて

1

私はあなたのような何かを探していると思う:

checkedNodes.Keys.Cast<string>().Any(k => k.Contains(e.Node.Path)); 
+0

これは素晴らしい、ありがとう! – acurachris

+0

@acurachrisここまでうれしい〜:) – Student222

関連する問題