gpt4 book ai didi

c# - 转换为 IEnumerable

转载 作者:太空宇宙 更新时间:2023-11-03 22:10:21 25 4
gpt4 key购买 nike

我有一段相当长的代码,用于计算列表中的某个属性设置为特定值的对象的数量。然而,我上面提到的几乎所有内容都会在运行时传递,给我留下这个:

((List<MyObject>)this.DataSource).Count(d => d.GetType().GetProperty(MyProperty).GetValue(d, null).ToString() == ValueToMatch);

问题在于列表作为对象存储在数据源属性中。为了使用计数,目前我必须将此对象转换为 MyObject 类型的列表。我希望能够在 DataSource 中存储任何类型的 IEnumerable。我知道存储在数据源中的对象将始终是一个列表,但我无法让 C# 相信这一事实。它一直提示类型安全。

我在 .Net 3.5 中,因此由于协变/逆变,向上转换为 List< Object > 在运行时失败(我永远记不起哪个是哪个)。我同样无法转换为 IEnumerable。有没有办法让这段代码与任何类型的 IEnumerable 一起工作?

最佳答案

这个怎么样:

((IEnumerable)this.DataSource).Cast<object>().Count(d => d.GetType().GetProperty(MyProperty).GetValue(d, null).ToString() == ValueToMatch);

Enumerable.Cast 是为数不多的适用于非泛型 IEnumerable 的扩展方法之一.它返回 IEnumerable<T>之后您可以使用其他扩展方法,例如 Enumerable.Count .

关于c# - 转换为 IEnumerable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6871010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com