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>();