动态LINQ。 “ClassName”类型中不存在属性或字段“FieldName”

时间:2011-11-15 09:01:40

标签: vb.net linq dynamic-linq xpo

我的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 Class中读取后,我找到了这个函数

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

如何编辑“错误”查询?我在这做错了什么?

感谢您的时间。

2 个答案:

答案 0 :(得分:7)

尝试将'John'设置为参数,而不是直接在字符串中。

Here您可以找到一些显示此内容的文档。它看起来像.Where("Name=@0", "John")

答案 1 :(得分:4)

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

或者,您可以使用参数:.Where("Name=@0", "John")