You need to enable JavaScript to run this app. C# LINQ 如何按label取Field的value赋值给MyClass的Temp属性
优惠活动
大模型
产品
解决方案
定价
更多

C# LINQ 如何按label取Field的value赋值给MyClass的Temp属性

代码修正方案

当前编写的LINQ存在两处编译/逻辑问题:

  • x.fields.Where(a => a.label == "Label") 会返回Field对象集合,无法直接赋值给bool类型的Temp属性,需要提取对应项的value字段
  • 从Field中拿到的value是字符串类型,需要转换为布尔类型,同时要处理找不到匹配label项时的空值场景

修正后代码

// ToList()返回的是List<MyClass>,变量类型要和返回值匹配避免编译报错
List<MyClass> myClassList = JSONResponse.data.presences.Select(x => new MyClass()
{
    Id = Convert.ToInt32(x.id),
    Name = x.name,
    Temp = Convert.ToBoolean(
        // 定位匹配指定label的单个Field项,取它的value
        x.fields.FirstOrDefault(field => field.label == "替换为你实际的匹配label值")?.value
        // 找不到匹配项时给默认值,避免空引用导致的运行时报错
        ?? "false"
    )
}).ToList();

调整说明

  • 用FirstOrDefault替换Where:每个label和Field是一一对应的场景下,直接取单个匹配项即可,不需要返回整个集合
  • 增加空值兜底:通过空条件运算符判断匹配项是否存在,无匹配时提供可转换为bool的默认字符串,不会触发空引用异常
  • 把代码里占位的"Label"替换为业务中实际需要匹配的label字符串值即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.03 14:54:03