vb.net - 使用动态 where 子句进行查询(连接数组元素)

标签 vb.net linq dynamic-linq

我有一个动态数组,其中的元素应过滤 linq 查询中的元素(where 子句)。

我使用this questions中提到的System.Linq.Dynamic库最佳答案。如果我运行:

Dim query = From element In dtImitate.Where("Team = ""Avangers"" Or Team = ""Asgard""")

查询正在运行。但是如果我收集数组元素并将它们放入这样的字符串中:

Public Shared Function CreateDynString(ByRef arr As String()) As String
 Dim a As New StringBuilder
        a.Append("""")
        For Each element In arr
            a.Append("Team = ").Append("""""").Append(element).Append("""""").Append(" or ")
        Next

        Dim b As Integer = a.Length - 4
        a.Remove(b, 4)
        a.Append("""")
        Return a.ToString
End Function

并运行查询:

Dim s As String = DynamicStringBuilder.CreateDynString(teamsArray).ToString
Dim query = From element In dtImitate.Where(s)

什么也没发生。我的 DGV 仍然空着。任何人都可以帮助我让这个查询工作并可以告诉我为什么它不起作用。如果我打印 s ,则为 "Team = ""Avangers""或 Team = ""Asgard"""。我不知道为什么它不起作用。

最佳答案

如果您要测试数组中的属性,则可以使用 IEnumerable 上的 Contains 扩展方法,这可能比构建字符串更好。试试这个:

Dim query = From element In dtImitate.Where(function (el) teamsArray.Contains(el.Team))

关于vb.net - 使用动态 where 子句进行查询(连接数组元素),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25786933/

相关文章:

c# - 通过 LINQ to SQL 过滤数据

c# - 使用 Linq 动态查询数据集

c# - Dynamic Linq 的执行延迟 IQueryable<T>?

c# - 动态 Linq + Entity Framework : datetime modifications for dynamic select

VB.NET datagridview 与组合框的一对一映射

c# - 以编程方式将 XLS 转换为 XLSB?

vb.net - 在不滚动的情况下删除 RichTextBox 中先前选择的突出显示

android - android 和 vb.net 之间通过套接字进行通信

c# - 通过 LINQ 查找目标数字是否是数组中两个数字的总和

c# - 在 LINQ 查询中检查 NULL 的小数