在对象列表中搜索

时间:2012-05-12 11:49:46

标签: c#

我有一个包含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循环,但我得到了相同的结果。我不确定我做的是正确的事情,并会提供一些帮助!谢谢!

1 个答案:

答案 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 Con​​tactData对象更新所有Customers,因为正在使用指针。相反,对于每个客户,请改为创建一个全新的ContactData对象。

如果这两种可能性无法提供帮助,则您必须发布更多代码才能进行问题排查。