返回列表对象的索引值?

时间:2013-11-26 23:30:29

标签: c# list object

对于我的生活,我无法弄清楚这一点。基本上我正在尝试使用未排序的对象列表来创建搜索功能。无论我尝试什么,位置返回-1。当我看到逻辑时,它对我来说很有意义,但也许我一直盯着我的屏幕太久了。任何帮助将不胜感激!

            public static int ContactSearchFirst(List<Contact> contactList, string userInput)
    {
        int location = -1;
        for (int index = 0; index < contactList.Count && location == -1; index++)
        {
            if (contactList[index].FirstName.ToUpper().Equals(userInput.ToUpper()))
            {
                location = index;
            }
        }
        return location;
    }

3 个答案:

答案 0 :(得分:1)

如果你正在使用C#,那么整个循环是不必要的。您只需使用List<T>.FindIndex方法:

public static int ContactSearchFirst(List<Contact> contactList,
                                     string userInput)
{
    return contactList
        .FindIndex(c => 
            c.FirstName.Equals(userInput,
                               StringComparison.InvariantCultureIgnoreCase));
}

您可能还想修剪输入,以便前导/尾随空格不会导致意外结果。

答案 1 :(得分:0)

如果以下情况属实,您只会得到一个新的位置值,所以也许它永远不会是真的:

if (contactList[index].FirstName.ToUpper().Equals(userInput.ToUpper()))

答案 2 :(得分:0)

调用函数时,参数传递可能不正确。

如果您使用的是Visual Studio,可以通过在代码中设置断点并检查contactList和userInput变量来轻松检查。