Asp.net Linq选择项目在列表中的位置
这应该很容易,但我做不到 我有一个列表(T)和一个linq到sql查询。我想选择查询中的特定键也要在列表中找到的所有记录 所以我这样做:Asp.net Linq选择项目在列表中的位置,asp.net,vb.net,linq,linq-to-sql,Asp.net,Vb.net,Linq,Linq To Sql,这应该很容易,但我做不到 我有一个列表(T)和一个linq到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.
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))
但这是大错特错。有人能帮我吗
致以最诚挚的问候。未经测试,但类似以下内容:
Dim query = db.MyTable.Where(Function(f) myChkLst.Select(Function(c) c.No).Contains(f.No))
未经测试,但大致如下:
Dim query = db.MyTable.Where(Function(f) myChkLst.Select(Function(c) c.No).Contains(f.No))
你可以用任何一种
Dim query = From a In db.MyTable.Where(Function(f) myChkLst.any(function(c) c.No = f.no)))
你可以用任何一种
Dim query = From a In db.MyTable.Where(Function(f) myChkLst.any(function(c) c.No = f.no)))
为什么它“大错特错”?为什么它“大错特错”?似乎OP需要
包含而不是=
@huMptyduMpty这在功能上是等价的,只是做这件事的语法更为详细。因为列表似乎也有不止一个字段,所以它应该是select/Contains或any。(我认为)使用带有“any”的示例给了我一个例外:“除了Contains()运算符之外,不能在查询运算符的LINQ to SQL实现中使用局部序列”哦,是的,对不起,我总是在从db检索列表后使用此方法,我搜索并发现您是对的。直接从表中执行此操作的唯一方法是使用Contains。似乎OP需要Contains
而不是=
@huMptyduMpty这在功能上是等效的,只是更详细的语法。因为列表似乎也有多个字段,所以应该是select/Contains或any。(我认为)使用带有“any”的示例给了我一个例外:“除了Contains()运算符之外,不能在查询运算符的LINQ to SQL实现中使用局部序列”哦,是的,对不起,我总是在从db检索列表后使用此方法,我搜索并发现您是对的。直接从表中执行此操作的唯一方法是使用Contains。