多行 where 子句
multiple line where clauses
我有一个包含多个输入(文本字段)的搜索页面。这些输入可能为空,也可能不为空 - 取决于用户搜索的内容。
为了适应这一点,我创建了一个基础 searchQuery
对象,它引入了所有正确的关系,然后对于每个非空输入,我使用 searchQuery.Where
函数修改了查询。
如果我在 WHERE 子句中放置多个条件,我会收到以下错误:
Cannot compare elements of type 'System.Collections.Generic.ICollection`1'. Only primitive types, enumeration types and entity types are supported.
searchQuery = searchQuery.Where(Function(m) (
(absoluteMinimumDate < m.ClassDates.OrderBy(Function(d) d.Value).FirstOrDefault.Value) _
OrElse (Nothing Is m.ClassDates)
)
)
我知道代码看起来很时髦,但我试图对其进行格式化,这样您就不必水平滚动就可以看到全部内容
现在,如果我删除 ORELSE 子句,一切正常(但当然我没有得到我需要的结果)。
searchQuery = searchQuery.Where(Function(m) (
(absoluteMinimumDate < m.ClassDates.OrderBy(Function(d) d.Value).FirstOrDefault.Value)
)
)
这个很好用
那么,我做错了什么?如何制作多条件 where 子句?
Where
中的多个条件不是问题。 m.ClassDates Is Nothing
永远不会是真的,并且在 SQL 术语中没有意义。您无法将 "is the set of ClassDates associated with this record NULL?" 翻译成 SQL。你的意思是,有没有0个。
如果没有附加的 ClassDate
记录,m.ClassDates
将是一个空列表。你想要 m.ClassDates.Count = 0 OrElse...
我有一个包含多个输入(文本字段)的搜索页面。这些输入可能为空,也可能不为空 - 取决于用户搜索的内容。
为了适应这一点,我创建了一个基础 searchQuery
对象,它引入了所有正确的关系,然后对于每个非空输入,我使用 searchQuery.Where
函数修改了查询。
如果我在 WHERE 子句中放置多个条件,我会收到以下错误:
Cannot compare elements of type 'System.Collections.Generic.ICollection`1'. Only primitive types, enumeration types and entity types are supported.
searchQuery = searchQuery.Where(Function(m) (
(absoluteMinimumDate < m.ClassDates.OrderBy(Function(d) d.Value).FirstOrDefault.Value) _
OrElse (Nothing Is m.ClassDates)
)
)
我知道代码看起来很时髦,但我试图对其进行格式化,这样您就不必水平滚动就可以看到全部内容
现在,如果我删除 ORELSE 子句,一切正常(但当然我没有得到我需要的结果)。
searchQuery = searchQuery.Where(Function(m) (
(absoluteMinimumDate < m.ClassDates.OrderBy(Function(d) d.Value).FirstOrDefault.Value)
)
)
这个很好用
那么,我做错了什么?如何制作多条件 where 子句?
Where
中的多个条件不是问题。 m.ClassDates Is Nothing
永远不会是真的,并且在 SQL 术语中没有意义。您无法将 "is the set of ClassDates associated with this record NULL?" 翻译成 SQL。你的意思是,有没有0个。
如果没有附加的 ClassDate
记录,m.ClassDates
将是一个空列表。你想要 m.ClassDates.Count = 0 OrElse...