私たちが現在構築しているものの 1 つは、人を探すための検索機能です。
簡単に始めるときは、次のように Linq を使用してエンティティを検索しました。Entities.People.Where(z=>z.Birthdate < birthdate).ToList()
その後、新しい検索基準が追加されると、linq ステートメントはどんどん大きくなり、誰も理解できなくなったのでリファクタリングする必要があります。
この時点で、「ここで働いていましたか」、「この言語を話せますか」、「これらの 6 つのスキルのうち、どのスキルを習得していますか」など、8 つの関連項目の検索を容易にする必要があります。
これらのアイテムはすべて、SqlServer では 1:N または N:N の関係であり、複数のアイテムを検索しており、「どれだけ一致しているか」を知りたいと考えています。
例: フランス語または英語またはドイツ語を話す人を探し、少なくとも 1 つの一致を持っているすべての人を取得したい。それらの人々について、一致する数を知りたい (つまり、3 人中 1 人または3分の2)すべての人が持っています。
この時点での問題は、何をするのが賢明かということです (データベース内の約 10.000 人)。
ブレーンストーミングの結果、次の選択肢にたどり着きました。
- データベースで最速の検索を行い (限られた量のレコードを取得するため)、コードで残りを並べ替えます
- Linq で構築を続ける
- SqlServer でアクション全体を実行する
始めるためのヒントはありますか?