3

我的 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

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

谢谢你的时间。

4

2 回答 2

7

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

在这里您可以找到一些说明这一点的文档。它看起来像.Where("Name=@0", "John")

于 2011-11-15T09:11:22.110 回答
4

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

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

于 2011-11-15T09:09:36.253 回答