住所を個々の部分に分割し、一致する項目を住所テーブルから返すメソッドを実装する必要があります。一致するものが見つからない場合は、どこで失敗したかを示す値を返せるようにしたいと考えています。各入力パラメーターには、テーブル内の対応するフィールドがあります。
署名は次のようになります。
List<Address> MatchAddress(string zipCode, string streetName, string houseNumber, string houseLetter, string floor, string appartmentNo, out int mismatchPosition)
{
// return matching addresses
// if none found, return the position where it stopped matching
// zipCode is position 0, appartmentNo is position 5
//
// an empty param value indicates "don't check"
}
すべてのパラメーターから開始し、クエリを実行してから、一致が見つかるかパラメーターがなくなるまで (右側から) パラメーターごとにパラメーターを削除するようにメソッドを構築できることはわかっていますが、クエリを構築できますか?それよりも効果的です。つまり、データベースへの呼び出しの数を最小限に抑えます。