【问题标题】:Linq select where items exists in listLinq选择列表中存在的项目
【发布时间】:2013-12-12 15:13:07
【问题描述】:

这应该很容易,但我做不到。

我有一个列表(T)和一个 linq to sql 查询。我想选择查询中的特定键也在列表中找到的所有记录

所以我这样做:

Public Class myChekList
   Public Property custNo As String
   Public Property No As String
 End Class

 '''fill a list object myChkLst with items      

  Dim query = From a In db.MyTable.Where(myChkLst(Function(f) f.No).Contains(a.No))

但这是一个可怕的错误。有谁能够帮助我?

最好的问候。

【问题讨论】:

标签: asp.net vb.net linq linq-to-sql


【解决方案1】:

未经测试,但类似这样:

 Dim query = db.MyTable.Where(Function(f) myChkLst.Select(Function(c) c.No).Contains(f.No))

【讨论】:

    【解决方案2】:

    你也可以使用 .any

     Dim query = From a In db.MyTable.Where(Function(f) myChkLst.any(function(c) c.No = f.no)))
    

    【讨论】:

    • 似乎 OP 需要 Contains 而不是 =
    • @huMptyduMpty 这在功能上是等价的,只是语法更冗长。
    • 由于列表似乎有多个字段,它应该是 select/contains 或任何。(我认为)
    • 将您的示例与“任何”一起使用给了我一个例外:“本地序列不能在查询运算符的 LINQ to SQL 实现中使用,但 Contains() 运算符除外”
    • 哦,是的,对不起,我从db检索列表后总是使用这种方法,我搜索了一下,发现你是对的。直接从表中执行此操作的唯一方法是使用 Contains。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多