c# - 从动态变量中的集合中获取项目

标签 c# dynamic ienumerable

我正在编写一些使用动态变量的代码。

dynamic variable;

在幕后,这个变量包含形状的集合,这又是动态变量的集合。 所以像这样的代码工作正常:

foreach(var shape in variable.Shapes) //Shapes is dynamic type too
{
    double height = shape.Height; 
}

我需要从这个集合中获取第一个项目的高度。 这个技巧很有效:

double height = 0;
foreach(var shape in variable.Shapes)
{
    height = shape.Height; //shape is dynamic type too
    break;
}

有没有更好的方法来完成这个?

最佳答案

因为 variabledynamic ,您将无法评估 variable.Shapes.First() ,因为扩展方法的确定发生在编译时,而动态调用发生在运行时。您将必须显式调用静态方法,

System.Linq.Enumerable.First<TType>(variable.Shapes).Height . 在哪里TType是可枚举项的预期类型。

否则,请按照其他人的建议使用 LINQ。

关于c# - 从动态变量中的集合中获取项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12503445/

相关文章:

c# - 锁定可枚举可能会导致多重枚举吗?

javascript - .NET 的 Enumerable.Select 是否有对应的 javascript/jQuery?

c# - 在图片中结合MVVM和MVC

c# - 尝试使用 WCF 服务时出现 FaultException

c# - 如何从 Npgsql 和存储过程返回自定义表类型?

c# - 为什么我的 List.GetUserEffectivePermissions() 方法不起作用?

javascript - 由 JavaScript 和 AJAX 支持的动态网站的 SEO

dynamic - Enterprise Architect 序列图中的平行生命线

c# - Newtonsoft 与 IDynamicMetaObjectProvider 实现反序列化类相关的问题

c# - 检查序列是否为空的推荐方法