如何确定一个值是否几乎与另一个值(例如街道缩写)相似?

时间:2013-05-09 14:28:25

标签: c# .net

我对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...
            }
        }

在“do stuff”部分,我需要检查一个地址,看看它是否与该人的先前订单相同。所以地址可以改变,相同或类似。

通过类似我的意思是这样的:

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

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

1 个答案:

答案 0 :(得分: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个对象。