2

DataRow のいくつかの要素について質問があります。次のような DataRow 要素の配列があります。

 DataRow[] rows = dt.Rows.Cast<DataRow>().ToArray();

次のように要素をループするためにループを使用しています。

        for ( int i = 0; i < rows.Count(); i++)
        {
            if (rows[i].ItemArray.ElementAt(0).ToString().Equals("ORDER"))
            {
                 ...do stuff...
            }
        }

「何かをする」セクションでは、住所をチェックして、その人の以前の注文と同じかどうかを確認する必要があります。したがって、アドレスは変更されたり、同じであったり、類似したりします。

同様に、私は次のようなことを意味します:

11555 Old Oregon Tr
11555 Old Oregon Trail
11555 Old Oregon Trl.

3 つすべてが同じアドレスで、バリエーションがあります。さて、私の質問です。DataRow 配列の要素に対して like 操作を実行する方法はありますか? 住所が以前の注文と同じかどうかを確認したい。私は少し見回してきましたが、あなたができるという証拠を実際には見つけていませんが、誰かが解決策や回避策を知っているかどうかを確認するために質問したいと思いました.

4

1 に答える 1

1

技術的にはあなたの質問に直接答えないので、私はこれに悩まされるかもしれませんが、このSQLFiddleを検討してください。SOUNDEXこの操作を実行するために活用します。クエリは次のようになります。

SELECT * FROM Addresses
WHERE SOUNDEX(Address) = SOUNDEX('11555 Old Oregon Tr')

行をループしているときに、次のようなことができます。

var sql = "SELECT * FROM Addresses WHERE SOUNDEX(Address) = SOUNDEX(@Address)";
var cmd = new SqlCommand(sql, conn);

using (SqlDataReader reader = cmd.ExecuteReader())
{
    // perform your logic in here because now you're looping through the realted
    // rows and the row you queried against
}

はオブジェクトですconnSqlConnection

于 2013-05-09T14:39:30.357 に答える