C# 如何使用结构的元素在数组中查找结构?
例如,假设我有一个结构,它表示一个人,并包含他们的姓名和年龄。我有一个人物数组,现在我想在数组中找到与“John Doe”匹配的人物。做了一些初步的研究之后,我找到了C# 如何使用结构的元素在数组中查找结构?,c#,arrays,struct,C#,Arrays,Struct,例如,假设我有一个结构,它表示一个人,并包含他们的姓名和年龄。我有一个人物数组,现在我想在数组中找到与“John Doe”匹配的人物。做了一些初步的研究之后,我找到了Array.Find,但文档中对它的描述令人困惑。如果有人能帮我,我将不胜感激。试试IEnumerable上的linq扩展方法中的.Single(foo=>foo.bar==“What your want.”) 请参阅:您可以更轻松地使用LINQ。首先使用System.Linq添加,然后编写以下内容: var john = peop
Array.Find
,但文档中对它的描述令人困惑。如果有人能帮我,我将不胜感激。试试IEnumerable上的linq扩展方法中的.Single(foo=>foo.bar==“What your want.”)
请参阅:您可以更轻松地使用LINQ。首先使用System.Linq添加
,然后编写以下内容:
var john = people.FirstOrDefault( p => p.Name == "John Doe" );
使用Array.Find
可以执行以下操作:
var john = Array.Find( people, p => p.Name == "John Doe" );
我通常更喜欢LINQ方法,因为它更直接、更可读,因为您可以直接在数组本身上调用FirstOrDefault
方法。此外,如果您希望确保只有一个实例匹配或抛出异常,或者使用First
和Single
在未找到任何内容时抛出异常,则可以使用Single
。当没有找到匹配项时,这些方法的…Default
版本返回Default(T)
。这是给你的
Array.Find
接受两个参数:要搜索的数组和要在每个元素上运行的谓词
A是任何函数或方法,它接受一个参数(person
),根据一个条件(person.Name==“Caleb”
)检查它,并返回true或false
在本例中,Array.Find
获取人员数组,根据谓词定义的条件一次检查一个人,并返回满足该条件的第一个人
using System;
public class Program
{
public static void Main()
{
var people = new [] {
new Person("Caleb"),
new Person("Martin"),
new Person("Shaun"),
new Person("Nechemia")
};
var result = Array.Find(people, person => person.Name == "Caleb");
Console.WriteLine(result.Name);
}
}
public struct Person
{
public readonly string Name;
public Person(string name)
{
Name = name;
}
}