繁体   English   中英

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

[英]How do I determine if one value is almost like another value (e.g. street abbreviations)?

我对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数组的元素上运行类似的操作? 我想检查该地址是否与先前订单中的地址相同。 我一直在四处寻找,并没有真正找到任何可以证明的证据,但我想问一个问题,看看是否有人知道解决方案,或者说解决方法。

我可能对此感到厌烦 ,因为从技术上讲它不能直接回答您的问题,但是请考虑使用此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对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM