You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# List<T>使用Find方法获取指定元素的单个属性值

实现方案

首先给出示例用的Part类定义,和官方示例保持一致:

public class Part
{
    public int PartId { get; set; }
    public string PartName { get; set; }
    // 可自行扩展其他属性
}

需求1:查找PartId为1634的对象,将PartName赋值给变量/文本框

List<T>.Find方法会直接返回匹配到的Part对象本身,不需要调用ToString(),直接访问对象属性即可:

// 初始化泛型列表,省略填充逻辑
List<Part> parts = new List<Part>();

// 查找匹配的Part对象
Part targetPart = parts.Find(p => p.PartId == 1634);

// 判空避免空引用异常
if (targetPart != null)
{
    // 赋值给字符串变量
    string partName = targetPart.PartName;
    // 赋值给文本框示例(WinForm场景)
    // txtPartName.Text = targetPart.PartName;
}

需求2:直接获取单个属性的原始值

如果不需要完整的Part对象,仅需单个属性,可以用两种方式实现,全程不会触发对象的ToString()方法:

方式1:配合空条件运算符直接取值(推荐)

// 直接获取PartName,找不到匹配项时返回null
string targetPartName = parts.Find(p => p.PartId == 1634)?.PartName;

// 找不到时返回自定义默认值
string targetPartNameWithDefault = parts.Find(p => p.PartId == 1634)?.PartName ?? "未找到对应部件";

// 同理获取PartId值
int? targetPartId = parts.Find(p => p.PartId == 1634)?.PartId;

方式2:LINQ投影取值(适合仅需要单个属性的场景)

using System.Linq; // 需先引入LINQ命名空间

// 筛选匹配项后直接投影取属性,不需要拿到完整Part对象
string partName = parts.Where(p => p.PartId == 1634)
                       .Select(p => p.PartName)
                       .FirstOrDefault();

注意:两种方案找不到匹配项时都会返回对应类型的默认值(引用类型返回null,值类型返回对应默认值),使用前建议做非空校验避免异常。

内容的提问来源于stack exchange,提问作者Arsalan Ahmadi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 08:06:03