use*_*142 -1 .net c# lambda list
我正在尝试用C#编写一个简单的Lambda表达式:
int numElements = 3;
string[]firstnames = {"Dave", "Jim", "Rob"};
string[]lastnames = {"Davidson", "Jameson", "Robertson"};
List<Person> people = new List<Person>();
for(int i = 0 ; i < numElements; i++)
{
people.Add(new Person { FirstName = firstnames[i], LastName = lastnames[i] });
}
bool test = people.Contains(p => p.FirstName == "Bob");
Run Code Online (Sandbox Code Playgroud)
我对Lambda表达式以及它们如何工作的理解仍然有点阴暗,我对于为什么这不起作用我很恼火......我试图找出一个列表是否包含一个名字......
你在找:
bool test = people.Any(p => p.FirstName == "Bob");
Run Code Online (Sandbox Code Playgroud)
或者你在混合Rob和Bob?
这里的问题不是lambdas,而是for
循环的边界.您定义的数组长度为3,但numElements
定义的值为10
.这意味着在循环的第4次迭代中,您将获得非法数组索引的异常.请尝试以下方法
int numElements = 3;
Run Code Online (Sandbox Code Playgroud)
或者更简单地删除numElements
变量,而是迭代到firstnames
数组的长度
for (int i = 0; i < firstnames.length; i++) {
...
}
Run Code Online (Sandbox Code Playgroud)
编辑
OP表示numElements
最初发布的是一个拼写错误.代码中的其他可能的错误来源
"Rob"
而不是"Bob"
Contains
方法GenericList<T>
需要具有兼容的委托签名. Func<T, bool>
例如