【问题标题】:Get a iqueryable items which do not exists on another list using lambda expression使用 lambda 表达式获取另一个列表中不存在的 iqueryable 项目
【发布时间】:2014-09-19 10:22:54
【问题描述】:

我有一个 IQueryable(Of T) 和一个依赖项列表 List(of T)。我正在尝试实现一个 IQueryable(Of T),它将排除 List(of T) 中的所有项目。

 Dim returnQuery As IQueryable(Of POCO.ClassName) = GetTheQuery(...)
 Dim excludeLists As List(Of POCO.ClassName) = GetExcludedList(...)

 returnQuery = returnQuery.Except(excludeLists)

尝试执行 IQueryable 的结果时发生错误。

无法创建“POCO.ClassName”类型的常量值。仅有的 在此上下文中支持原始类型或枚举类型。

似乎 except 在这种情况下不起作用。那么如何使用 lambda 表达式排除列表项。

【问题讨论】:

  • 这很有趣。我认为你最好不要使用 lambda 而只使用 Linq。您需要实施 lambda 是否有特定原因?
  • @Airborne 没有具体原因。我知道 Linq 可以做到的方式,但想知道 Lambda 有没有办法实现..

标签: c# vb.net linq lambda iqueryable


【解决方案1】:

嗯,典型的例子:http://msdn.microsoft.com/en-us/library/vstudio/bb300779(v=vs.100).aspx 使用双精度,结合你得到的错误,很明显 Except 只适用于像双精度这样的基元。

所以你必须使用 Linq,这并没有什么问题。

returnQuery = returnQuery.Where(item => !excludeLists.Contains(item))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    相关资源
    最近更新 更多