我想创建一个可以在列表中搜索某些东西并返回bool的函数。
MyList内部包含多个元素。每个变量都有一个名称变量,分配了不同的字符串。我想在列表中搜索特定的名称。 示例:
public class Type
{
public string name;
}
List<Type> MyList;
bool FindByName(string str)
{
foreach (Type type in MyList)
{
if (type.name == str)
return true;
}
}
我要使FindByName函数通用。该函数将采用:
List<T>, NameOfVariableToLookIn, U WhatToLookFor
您可以提供以下功能:
List<Type>, name, string str
担心是否有可能。我真的不想为我创建的每个新列表编写一个新函数。
答案 0 :(得分:2)
您可以使用Any()
命名空间中的System.Linq
扩展方法。您可以实现扩展方法。例如:
public static class Extensions
{
public static bool FindByName(this IEnumerable<Type> list, string str)
{
return list.Any(x => x.name == str);
}
}
请记住,扩展方法是静态方法,而不是列表的一部分,因此您应该引用Extensions
类。您可以这样使用它:
List<Type> MyList = new List<Type>();
MyList.Add(..); // add objects
var exists = MyList.FindByName("john");