C# 在列表中查找具有特定值的对象
我有这门课:C# 在列表中查找具有特定值的对象,c#,list,class,object,C#,List,Class,Object,我有这门课: public class Person { public String name; public int score; public float multiplier; public Person(String nameID) { name = nameID; score = 0; multiplier = 1.0f; } } 我有一个包含这些类的列表: private List&l
public class Person
{
public String name;
public int score;
public float multiplier;
public Person(String nameID)
{
name = nameID;
score = 0;
multiplier = 1.0f;
}
}
我有一个包含这些类的列表:
private List<Person> _people;
您可以使用
IEnumerable的Single
方法
var score = _people.Single(p => p.name == "example name").score
您可以使用IEnumerable的Single
方法
var score = _people.Single(p => p.name == "example name").score
使用LINQ:
_people.FirstOrDefault(c => c.name == "example name")?.score;
只是别忘了使用System.Linq添加首先使用
指令对您的进行编码。还要注意,您还需要使用运算符(?。
),该运算符用于在执行成员访问之前测试null(在本例中为score
)
此外,最好使用以下字段而不是字段:
public string Name { get; set; }
使用LINQ:
_people.FirstOrDefault(c => c.name == "example name")?.score;
只是别忘了使用System.Linq添加首先使用
指令对您的进行编码。还要注意,您还需要使用运算符(?。
),该运算符用于在执行成员访问之前测试null(在本例中为score
)
此外,最好使用以下字段而不是字段:
public string Name { get; set; }
您可以使用linq查询来获得结果:
int result = _people.FirstOrDefault(p => p.name == "example name").score
如果_peoplelist包含多个名为“example name”的记录,则可以使用where子句并从列表中获取所有结果
var results = _people.Where(p => p.name == "example name");
foreach(var r in results)
Console.WriteLine(r.score);
现在,您可以遍历结果以获得所有分数
以下是实现:您可以使用linq查询来获得结果:
int result = _people.FirstOrDefault(p => p.name == "example name").score
如果_peoplelist包含多个名为“example name”的记录,则可以使用where子句并从列表中获取所有结果
var results = _people.Where(p => p.name == "example name");
foreach(var r in results)
Console.WriteLine(r.score);
现在,您可以遍历结果以获得所有分数
以下是实现:从哪里来的GetScore
可能重复@RahulAgarwal,这只是我想要从哪里来的示例GetScore
可能重复@RahulAgarwal,这只是我想要的示例where
返回一个过滤的IEnumerable
,没有一个结果。谢谢@Rotem,我做了更正。FirstOrDefault比FirstOrDefault更精确where@Rotem,我使用了FirstOrDefault
以及Where
子句。感谢您的建议,其中
返回一个经过过滤的IEnumerable
,而不是一个结果。感谢@Rotem,我对其进行了更正。FirstOrDefault比FirstOrDefault更精确where@Rotem,我使用了FirstOrDefault
以及Where
子句。谢谢你的建议,如果名单上没有这个名字?@Rotem谢谢。检查我的最新答案和?
接线员。@S.Akbari谢谢,我会调查Linq。我不熟悉C#,{get;set;}做什么?@JamesA它们是自动实现的属性。阅读此文,如果在列表中找不到姓名?@Rotem,谢谢。检查我的最新答案和?
接线员。@S.Akbari谢谢,我会调查Linq。我不熟悉C#,{get;set;}做什么?@JamesA它们是自动实现的属性。阅读此文,如果样本中有一个且只有一个元素,则只能使用单个方法。我认为name
是玩家的主键。可以存在两个同名玩家吗?有时他们可以。因此,可能没有具有该名称的玩家,因为,例如,他尚未出现在游戏中。仅当样本中有一个且只有一个元素(根据其谓词)时,才能使用Single
method。我认为name
是玩家的主键。可以存在两个同名玩家吗?有时他们可以。因此,可能没有这个名字的玩家,因为,例如,他还没有出现在游戏中。