我有一个包含Customer对象的列表,我正在尝试在每个对象中搜索一个名称。在Customer对象中,有一个返回Contact对象的属性ContactData。在Contact对象中,我有一个返回名称字符串的方法。这是我想要比较的名称,但它不能正常工作,因为我每次都会得到一个命中,尽管我搜索的是任何Customer对象中都不存在的名称。我正在使用的代码:
foreach (Customer name in m_customers)
{
if (name.ContactData.FullName == "Anna")
{
MessageBox.Show(string.Format("Yes"), "Test!", MessageBoxButtons.OK, MessageBoxIcon.Information); // Just for testing
}
}
我还测试过使用一个简单的for循环,但我得到了相同的结果。我不确定我做的是正确的事情,并会提供一些帮助!谢谢!
答案 0 :(得分:1)
试试这个,可能是' FullName'某种程度上被设定为" Anna"适用于您的代码,数据库或存储过程中的所有客户......
foreach (Customer name in m_customers)
{
if(name.ContactData != null) System.Diagnostics.Debug.WriteLine(name.ContactData.FullName);
if (name.ContactData.FullName == "Anna")
{
MessageBox.Show(string.Format("Yes"), "Test!", MessageBoxButtons.OK, MessageBoxIcon.Information); // Just for testing
}
}
如果是这种情况,请对关键字' Anna'进行全局搜索。看看会弹出什么。
另一种可能性是您没有为每个客户创建一个新的ContactData对象,只是重用一个变量。这可能是使用SAME ContactData对象更新所有Customers,因为正在使用指针。相反,对于每个客户,请改为创建一个全新的ContactData对象。
如果这两种可能性无法提供帮助,则您必须发布更多代码才能进行问题排查。