假设我有以下代码:

class SampleClass
{
    public int Id {get; set;}
    public string Name {get; set;}
}
List<SampleClass> myList = new List<SampleClass>();
//list is filled with objects
...
string nameToExtract = "test";

所以我的问题是,我可以使用哪个列表函数从myList中仅提取名称属性与我的nameToExtract字符串匹配的对象.

如果这个问题真的很简单/明显,我提前道歉.

推荐答案

您可以使用Enumerable.Where扩展方法:

var matches = myList.Where(p => p.Name == nameToExtract);

返回IEnumerable<SampleClass>.假设你想要一个经过过滤的List,只需在上面拨打.ToList()即可.


顺便说一句,如果我今天编写上面的代码,考虑到Unicode字符串处理的复杂性,我会以不同的方式进行相等判断:

var matches = myList.Where(p => String.Equals(p.Name, nameToExtract, StringComparison.CurrentCulture));

See also

.net相关问答推荐

DI通过对象的接口而不是实际类型来解析服务

使用EFCore.BulkExtensions库方法BulkInertOrUpdate时区分插入和更新的记录

CustomControl 计算自己的宽度和高度 - 使用 bounds.Height=0 调用 ArrangeOverride

比较 C# 中的双精度值

如何中止任务,如中止线程(Thread.Abort 方法)?

您是否使用 TestInitialize 或测试类构造函数来准备每个测试?为什么?

我应该默认推荐密封类吗?

哪个单元测试框架?

如何将时间设置为当天的午夜?

如何在 RabbitMQ 中设置重试次数?

如何在 C# 中以编程方式安装 Windows 服务?

为什么会出现编译错误使用未分配的局部变量?

.NET 委托类型的正确命名约定?

C# 应用程序中的全局键盘捕获

System.IO.IOException:使用 System.IO.Path.GetTempFileName() 时文件存在 - 解决方案?

如何为 Dapper 查询动态创建参数

判断数据表中是否包含空值的最佳方法

连接字符串而不是使用一堆 TextBlocks

为什么 IList 不支持 AddRange

SqlParameter 已被另一个 SqlParameterCollection 包含 - using() {} 作弊吗?