根据 List(Of Guid) 里的项来查找多个记录的 Linq 写法,该怎么处理
根据 List(Of Guid) 里的项来查找多个记录的 Linq 写法
数据里面的一个表,有 ID 字段,类型为 GUID。
程序里面传入一个包含多个 ID 的 List(Of Guid),要查询出来这些 ID 的记录。
刚开始写:
提示 IndexOf 无法转换。
改为:
提示 ids 无法转换。但如果查询一个:
就没问题。
像此类问题大家是如何解决的?
------解决方案--------------------
数据里面的一个表,有 ID 字段,类型为 GUID。
程序里面传入一个包含多个 ID 的 List(Of Guid),要查询出来这些 ID 的记录。
刚开始写:
- VB.NET code
Public Shared Function Query(ids As List(Of Guid)) As DemoItem DemoTableEntities.Where(Function(x) ids.IndexOf(x.ID) >= 0).ToList() End Function
提示 IndexOf 无法转换。
改为:
- VB.NET code
Public Shared Function Query(ids As List(Of Guid)) As DemoItem DemoTableEntities.Where("it.ID = {0} Or it.ID = {1} Or it.ID = {2} ... ", ids.ToArray).ToList() End Function '其中 it.ID = {0} Or it.ID = {1} Or it.ID = {2} ... 这句是 ids 循环动态生成的字符串
提示 ids 无法转换。但如果查询一个:
- VB.NET code
Public Shared Function Query(ids As List(Of Guid)) As DemoItem DemoTableEntities.Where("it.ID = {0}", ids(0)).ToList() End Function
就没问题。
像此类问题大家是如何解决的?
------解决方案--------------------
- VB.NET code
Public Shared Function Query(ids As List(Of Guid)) As DemoItem DemoTableEntities.Where(Function(x) ids.Contains(x.ID)).ToList() End Function