2011-11-15 27 views
2

我的LINQ查询如下动态LINQ。无属性或字段“字段名”式存在“类名”

Dim Query = From t In New XPQuery(Of xUser)(Xpo.Session.DefaultSession) 
.Where("Name=John").Select("new (Name as FirstName)") 

不幸的是我得到的错误No property or field 'John' exists in type 'xUser'

当然没有这样的属性在我的XUSER类存在,但热我能解决吗?

的DynamicLinq类内看完之后,我发现这个功能

Function FindPropertyOrField(ByVal type As Type, ByVal memberName As String, ByVal staticAccess As Boolean) As MemberInfo 
    Dim flags As BindingFlags = BindingFlags.Public Or BindingFlags.DeclaredOnly Or _ 
     If(staticAccess, BindingFlags.Static, BindingFlags.Instance) 
    For Each t As Type In SelfAndBaseTypes(Type) 
     Dim members As MemberInfo() = t.FindMembers(MemberTypes.Property Or MemberTypes.Field, _ 
      flags, type.FilterNameIgnoreCase, memberName) 
     If members.Length <> 0 Then Return members(0) 
    Next 
    Return Nothing 
End Function 

如何编辑我的“故障”查询?我在这里做错了什么?

谢谢你的时间。

+0

如果您尝试将'John'设置为参数而不是直接在字符串中,该怎么办? –

+0

@ Wouter de Kort It works!你可以把它作为答案吗? – OrElse

回答

7

尝试在字符串中设置“约翰”作为参数,而不是直接。

Here你可以找到一些文件显示这一点。它看起来像.Where("[email protected]", "John")

4

它应该是.Where("Name='John'")(引号围绕字符串)。

或者,你可以使用一个参数:.Where("[email protected]", "John")