gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 09:00:52 24 4
gpt4 key购买 nike

我有一个动态数组,其中的元素应过滤 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com