我对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数组的元素上运行类似的操作?我想检查地址是否与之前的订单中的另一个相同。我一直在环顾四周,并没有找到任何证据证明你可以,但我想问这个问题,看看是否有人知道解决方案,或者说是解决方法。
答案 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
}
其中conn
是SqlConnection
个对象。