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

如何使用Linq/C#检查数组中是否存在含指定Id属性的对象?

用LINQ替代遍历检查对象的解决方案

嘿,其实用LINQ来替代这种遍历完全没问题,而且不需要额外的特殊配置——只要你的项目已经引用了System.Linq命名空间(一般新建的.NET项目默认都会包含这个引用),直接写就行啦!

对比原来的循环写法和LINQ简化写法

假设你原来的循环代码是这样的(检查是否存在指定Id且处于锁定状态的对象):

// 示例对象类
public class YourObject
{
    public int Id { get; set; }
    public bool IsLocked { get; set; }
}

// 原来的遍历逻辑
var items = new List<YourObject>(); // 你的对象集合
int targetId = 123; // 要检查的目标Id
bool isLocked = false;

foreach (var item in items)
{
    if (item.Id == targetId && item.IsLocked)
    {
        isLocked = true;
        break;
    }
}

用LINQ可以简化成一行代码,逻辑完全一致(Any()方法会找到第一个符合条件的对象就停止遍历,和你循环里加break的效率一样):

// 用Any()直接判断是否存在符合条件的对象
bool isLocked = items.Any(item => item.Id == targetId && item.IsLocked);

额外场景:如果需要获取具体的对象

如果你不仅要判断状态,还需要拿到那个符合条件的对象,可以用FirstOrDefault():

var targetItem = items.FirstOrDefault(item => item.Id == targetId);
bool isLocked = targetItem != null && targetItem.IsLocked;

可能的语法错误排查

如果你尝试时出现语法错误,大概率是这两个原因:

  • 没添加命名空间引用:在代码文件顶部加上using System.Linq;
  • 对象属性或集合类型问题:确保你的集合实现了IEnumerable<T>(比如List<T>、数组都符合),同时确认属性名称(比如Id、IsLocked)拼写正确,大小写匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 09:03:11