Webページからデータを受け取っているので、戻ってきたものに基づいてデータをフィルタリングする必要があります。検索したいキーワードの数は、約30個です。
それらを一致させる最も効率的な方法は何ですか?〜2000のレコードを受け取ることができるので、すべてのレコードのリスト/配列/スイッチケースを検索するのは効率的すぎるとは思いませんか?
どの検索用語に一致する文字列があるかを知りたいだけの場合は、次を使用できますEnumerable.Intersect
。
var both = records.Intersect(searchTerms);
ToList
実行は延期されるため、新しいコレクションは作成されず、何らかの方法(feまたはforeach
または)で使用するまで実行されませんstring.Join
。
内部でを使用するSet
ため、非常に効率的です。
LINQでのセット操作の詳細は次のとおりです。
list / array / switch-caseの他に、私が考えることができるのはLinqだけです。
List<string> found = (from str in listOfStringsToSearch
where listOfKeywords.Any(keyword => str.Contains(keyword))
select str).ToList<string>();