日期:2014-05-20  浏览次数:20931 次

根据 List(Of Guid) 里的项来查找多个记录的 Linq 写法
数据里面的一个表,有 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