2011-05-29 94 views
0

我试图运行此代码,但a始终是null。我确信有一个Name,它为什么总是返回null?list.find question

public Animal FindAnimal(string Name) 
    { 
     Animal a = Animals.Find(

      delegate(Animal bk) 
      { 
       return bk.AnimalName.ToLower() == Name.ToLower(); 
      } 


      ); 
     return a; 

    } 
+2

什么的'Animal'类型是什么样子?你在“动物”列表中有什么?你在寻找什么名字? – 2011-05-29 20:11:27

+1

继承人一个建议:使用String.Compare而不是转换为小写或大写。 – Marlon 2011-05-29 20:17:46

+0

动物是类 – AMH 2011-05-29 20:26:53

回答

1

你的代码对我来说看起来很好。这里有一些小的优化,但:

public Animal FindAnimal(string name) 
{ 
    return Animals.Find((a) => String.Equals(a.AnimalName, name, StringComparison.CurrentCultureIgnoreCase)); 
} 

编辑 测试代码:

void Main() 
{ 
    var foundAnimal = FindAnimal("Monkey"); //Not null 
} 

List<Animal> Animals = new List<Animal>(){ new Animal() { AnimalName = "Monkey" }}; 

public Animal FindAnimal(string name) 
{ 
    return Animals.Find((a) => String.Equals(a.AnimalName, name, StringComparison.CurrentCultureIgnoreCase)); 
} 
public class Animal 
{ 
    public string AnimalName { get; set; } 
} 
+0

相同的问题 – AMH 2011-05-29 20:40:03

+0

发布您的完整代码 – Magnus 2011-05-29 20:41:00

+0

我创建动物列表,然后尝试找到,我不有任何其他的代码,U意味着动物类 – AMH 2011-05-29 20:42:15