C#:从列表中获取单个项目<custom_class>如果项目中存在一个属性值=“somevalue”,则列表</custom_class>

时间:2010-10-07 15:14:51

标签: c# list

我有一个自定义类的列表(其中包含名称,年龄,地址等属性)。如何检查列表中是否存在“名称”值为“shyju”的项目,如果它存在.Name将是唯一的。没有两个项具有相同的名称。

我现在想到的解决方案就是为每个循环进行循环并循环遍历每个项目并使用“shyju”检查每个项目的名称并将其返回。

还有其他办法吗?

4 个答案:

答案 0 :(得分:18)

如果列表中只有一个实例,则以下将返回带有提供名称的项目(如果有多个元素,它将抛出)。

var item = list.SingleOrDefault(x => x.Name=="shyju");
if ( item != null ) { 
  ...
}

它确实做了一些额外的工作,以确保列表中只有一个具有此名称的项目。如果您已经确定了,那么您可以使用FirstOrDefault代替

来加快速度
var item = list.FirstOrDefault(x => x.Name=="shyju");
if ( item != null ) { 
  ...
}

答案 1 :(得分:3)

试试这个:

Contact contact = contacts.FirstOrDefault(o => o.Name == "shyju");

答案 2 :(得分:3)

  

我有一个自定义类的列表(哪个   有像这样的属性   姓名,年龄,地址)。我如何检查   我是否有一个带有“名称”的项目   值列为“shyju”存在于列表中   如果它存在则返回它。名称将是   unique.No两个项目都相同   名称

如果列表是唯一的,那么如何实现,不是作为列表而是作为字典?

Dictionary<string, MyCustomClass> myCustomDictionary;
// code to populate the dictionary goes here...

然后你只需要这样做:

var person = myCustomDictionary["shyju"];

答案 3 :(得分:2)

您可以使用HashSet<T>代替List<T> 并在自定义类中实现EqualsGetHashCode