Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linq 访问通过动态链接查询返回的匿名类型_Linq_Dynamic_Types_Anonymous - Fatal编程技术网

Linq 访问通过动态链接查询返回的匿名类型

Linq 访问通过动态链接查询返回的匿名类型,linq,dynamic,types,anonymous,Linq,Dynamic,Types,Anonymous,我一直试图以匿名类型访问从动态linq查询返回的数据。我找到的建议建议是,我应该创建一个自定义类型,并在Select子句中使用它和new关键字。关于代码示例,我被引导到以下问题: 这确实是一个很好的例子,我将它合并到我的代码中(这是VB,所以我必须做一些翻译) 我的代码编译得很好,但当我运行它时,会出现以下错误: 示例中下一行的“值不能为null。参数名称:member”: bindings[i]=Expression.Bind(type.GetProperty(properties[i].N

我一直试图以匿名类型访问从动态linq查询返回的数据。我找到的建议建议是,我应该创建一个自定义类型,并在Select子句中使用它和new关键字。关于代码示例,我被引导到以下问题:

这确实是一个很好的例子,我将它合并到我的代码中(这是VB,所以我必须做一些翻译)

我的代码编译得很好,但当我运行它时,会出现以下错误:

示例中下一行的“值不能为null。参数名称:member”: bindings[i]=Expression.Bind(type.GetProperty(properties[i].Name),Expression[i])

这似乎与表达式(i)相链接,当我从数据库表返回两个字段时,表达式(i)正确地包含两项。属性(i)正确地保存这两个字段的名称。关于会员的价值应该是什么,应该在哪里找到,有什么想法吗?是数据库里的东西吗

这个查询的where子句起作用,当我以匿名类型运行它时,它会从记录中返回记录(或者更确切地说是两个字段)。返回的字段包含的数据不为空

下面是我的VB版本的代码,来自前面问题中提供的示例。我已将发生错误的行加粗或**。你知道是什么引起的吗

非常感谢

函数ParseNew()作为表达式
NextToken()
ValidateToken(令牌ID.OpenParen,Res.OpenParenExpected)
NextToken()
将属性设置为新列表(动态属性)()
将表达式设置为新列表(表达式)()
做
Dim exprPos=tokenVal.pos
Dim expr=ParseExpression()
将名称设置为字符串
如果标记标识为(“as”),则
NextToken()
propName=GetIdentifier()
NextToken()
其他的
Dim[me]作为MemberExpression=TryCast(expr,MemberExpression)
如果[me]为Nothing,则抛出ParseError(exprPos,Res.missingascluse)
propName=[me].Member.Name
如果结束
expressions.Add(expr)
添加(新的DynamicProperty(propName,expr.Type))
如果是tokenVal.id TokenId.Comma,则退出Do
NextToken()
环
ValidateToken(令牌ID.CloseParen,Res.CloseParenOrCommaExpected)
NextToken()
'添加代码以支持强类型返回
Dim type As type=If(newResultType,DynamicExpression.CreateClass(属性))
将绑定(properties.Count-1)设置为MemberBinding
对于i,整数=0到bindings.Length-1
**bindings(i)=Expression.Bind(type.GetProperty(properties(i).Name),Expression(i))**
下一个
返回表达式.MemberInit(表达式。[New](类型),绑定)
端函数