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.

所有三个都是相同的地址,只是变化。现在,我的问题。有没有办法对 DataRow 数组的元素运行类似的操作?我想检查地址是否与之前订单中的另一个地址相同。我一直在环顾四周,并没有真正找到任何证据证明你可以,但我想问这个问题,看看是否有人知道解决方案或解决方法。

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
}

conn对象在哪里SqlConnection

于 2013-05-09T14:39:30.357 回答