C# 如何访问动态列表中的项目?

C# 如何访问动态列表中的项目?,c#,.net,linq,dynamic-linq,C#,.net,Linq,Dynamic Linq,我正试图找出如何枚举.NET4.5中动态LINQ.Select(字符串选择器)的结果。动态linq来自System.linq.dynamic命名空间 编辑:我还包括System.Linq 我有一个方法如下所示: public void SetAaData(List<T> data, List<string> fields) { if (data == null || data.Count == 0) {

我正试图找出如何枚举.NET4.5中动态LINQ
.Select(字符串选择器)
的结果。动态linq来自
System.linq.dynamic
命名空间

编辑:我还包括
System.Linq

我有一个方法如下所示:

    public void SetAaData(List<T> data, List<string> fields)
    {
        if (data == null || data.Count == 0)
        {
            return;
        }
        var dynamicObject = data.AsQueryable().Select("new (" + string.Join(", ", fields) + ")");
        _aaData = dynamicObject;
    }
运行此测试时,出现以下错误:

MyTestingClass threw exception: 
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'System.Linq.EnumerableQuery<DynamicClass1>' does not contain a definition for 'Count'
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'System.Linq.EnumerableQuery<DynamicClass1>' does not contain a definition for 'ToList'
这导致了以下错误:

MyTestingClass threw exception: 
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'System.Linq.EnumerableQuery<DynamicClass1>' does not contain a definition for 'Count'
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: 'System.Linq.EnumerableQuery<DynamicClass1>' does not contain a definition for 'ToList'
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException:'System.Linq.EnumerableQuery'不包含'ToList'的定义
于是,我在这里查找了
System.Linq.EnumerableQuery
:。我看到所有的
.Count()
应该是一个有效的扩展方法,但是当我尝试它时它不起作用。事实上,当我尝试这些方法时,该页面中的任何方法都不起作用


我做错了什么?

扩展方法不能像是成员方法一样应用于
动态
对象

Count()
是在
System.Linq.Queryable
中定义的扩展方法,您可以直接在动态对象上调用它:

Assert.IsTrue(Queryable.Count(hasDynamicProperties.AaData) > 0)

您是否
正在使用System.Linq
?你需要它,但是你的代码没有显示出来。是的。我也在用这个,很酷。是否有一种方法可以扩展它以访问
hasDynamicProperties[0]。aProperty
?能否显示一个伪代码示例?什么类型的
hasDynamicProperties[0]
?我猜出来了
Enumerable.ElementAt(hasDynamicType,0)。AddressCode
其中
AddressCode
是传递给set方法的
列表字段中的一个字段。非常感谢您的帮助!