说我有以下代码:
class SampleClass
{
public int Id {get; set;}
public int Name {get; set;}
}
List<SampleClass> myList = new List<SampleClass>();
//list is filled with objects
...
string nameToExtract = "test";
Run Code Online (Sandbox Code Playgroud)
所以我的问题是我可以使用哪个List函数来myList仅从具有与我的nameToExtract字符串匹配的Name属性的对象中提取.
如果这个问题非常简单/明显,我会提前道歉.
Dan*_*n J 94
您可以使用Enumerable.Where扩展方法:
var matches = myList.Where(p => p.Name == nameToExtract);
Run Code Online (Sandbox Code Playgroud)
返回一个IEnumerable<SampleClass>.假设您想要过滤List,只需调用.ToList()上面的内容即可.
顺便说一句,如果我今天编写上面的代码,考虑到Unicode字符串处理的复杂性,我会以不同的方式进行相等性检查:
var matches = myList.Where(p => String.Equals(p.Name, nameToExtract, StringComparison.CurrentCulture));
Run Code Online (Sandbox Code Playgroud)
除了建议 LINQ 的其他答案之外,这种情况下的另一种选择是使用FindAll实例方法:
List<SampleClass> results = myList.FindAll(x => x.Name == nameToExtract);
Run Code Online (Sandbox Code Playgroud)