せずにC#の辞書内の文字列のキーの最初の発生を検索するためにどのように私はこのように辞書にデータを持っている:キーは文字列型がLINQ
Dictionary<string, cls_CTCs> dict = new Dictionary<string, cls_CTCs>();
dict.Add("9814|30500994",Obj);
dict.Add("41377|30302099",Obj);
dict.Add("65793|30500337",Obj);
dict.Add("92894|30300795",Obj);
dict.Add("92894|30300826",Obj);
dict.Add("92894|30300827",Obj);
dict.Add("92894|30300828",Obj);
dict.Add("56936|30300894",Obj);
dict.Add("56936|30300365",Obj);
dict.Add("56936|30300485",Obj);
ある場合は、値はクラスのオブジェクトです。私は、likeまたはstartswithパターンでこの辞書のすべてのキーで文字列が最初に出現するのを見つけたい。たとえば、 "92894"を検索すると、 "92894 | 30300795"というキーが返されます。 "56936"を検索すると、キー "56936 | 30300894"が返されます。
私はそれがLINQを使って簡単に行うことができますが、私はLINQを使用したくないことを知っています.LINQを許可しないC#CLRストアドプロシージャでこのコードを使用します。だから、私が望むものを達成するための拡張方法や他の方法がありますか?
要件は何ですか?それは本当に速くする必要がありますか?または単に辞書のエントリをループしないのはなぜですか? – MarkusE
あなたの最後の質問と同じ回答 - linqを使わないで部分的なキー検索をすることはできません - forループを使用して、それは遅くなります - しかし、あなたのsqlがこれをやっているように聞こえるようになります – BugFinder
ディクショナリの 'AllKeys部分的なキーと一致するようにそれぞれ 'String.StartsWith'を実行してから、マッチを返します。しかし、それがあなたの仕事であれば、辞書はデータ構造の最良の選択ではありません。試してみてください。 LINQはここでのパフォーマンスの改善に役立ちません。 – dlatikay