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

如何从IEnumerable<object>中获取YearOfBirth属性的值?

从返回的IEnumerable集合中获取指定属性的值

给你几个可行的解决方案:

方案1:用dynamic类型直接访问

返回的集合里是匿名类型实例,在同一程序集内可以借助dynamic直接访问它的属性,代码示例:

// 先调用方法拿到结果
var nullProps = GetProps(你的对象实例);
// 筛选出YearOfBirth对应的项
var yearOfBirthItem = nullProps.Cast<dynamic>()
                               .FirstOrDefault(item => item.property == "YearOfBirth");

if (yearOfBirthItem != null)
{
    var value = yearOfBirthItem.value; // 这里拿到的就是null(符合你的示例)
    // 后续可以加自己的处理逻辑
}

方案2:通过反射访问属性

如果是跨程序集场景,或者不想用dynamic,就用反射来读取属性值:

var nullProps = GetProps(你的对象实例);
var yearOfBirthItem = nullProps.FirstOrDefault(item => 
    item.GetType().GetProperty("property")?.GetValue(item)?.ToString() == "YearOfBirth");

if (yearOfBirthItem != null)
{
    var value = yearOfBirthItem.GetType().GetProperty("value")?.GetValue(yearOfBirthItem);
    // 处理逻辑
}

方案3:修改原方法返回强类型(推荐)

匿名类型的灵活性太差,不如定义一个明确的类来存属性名和值,后续使用更省心:
首先定义承载类:

public class PropertyValuePair
{
    public string Property { get; set; }
    public object Value { get; set; }
}

然后修改原方法的返回类型和创建对象的逻辑:

public static IEnumerable<PropertyValuePair> GetProps<T>(T obj)
{        
    var result = obj.GetType().GetProperties()
        .Select(x => new PropertyValuePair { Property = x.Name, Value = x.GetValue(obj) })
        .Where(x => x.Value == null)
        .ToList();
    return result;
}

之后访问就非常直观了:

var nullProps = GetProps(你的对象实例);
var yearOfBirthItem = nullProps.FirstOrDefault(item => item.Property == "YearOfBirth");

if (yearOfBirthItem != null)
{
    var value = yearOfBirthItem.Value;
    // 处理逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 01:15:11