【问题标题】:Dynamically Entering "select" by a string in LINQ Query在 LINQ 查询中通过字符串动态输入“选择”
【发布时间】:2021-09-16 06:56:35
【问题描述】:
 List<int> list = new List<int> { 1, 2, 4, 5, 6, 7 };
           string selectQuery = "x";
            var result = from x in list
                         where x > 3
                         select selectQuery;

此代码将返回“xxxx”,我希望它返回 4 5 6 7。

我想通过字符串动态输入选择,但此代码返回字符串。 我有一个条件表,对于每个条件我想使用一个 LINQ 查询,所以我将 select 语句放在一个字符串表中,我想为每个条件应用它。

【问题讨论】:

标签: c# linq dynamic-linq


【解决方案1】:

这是因为您正在为每个项目选择(返回)selectQuery 变量。

试试这个:

var result = from x in list
             where x > 3
             select x;

这将返回原始列表中与 where 子句中的条件匹配的每个项目。

【讨论】:

    【解决方案2】:

    抱歉,您不能在字符串中指定选择条件。我认为你能得到的最接近的是在函数中指定条件,然后将函数提供给选择。

    【讨论】:

      【解决方案3】:

      试试这个:只需将您的选择查询字符串转换为整数,然后使用该值过滤列表:

      List<int> list = new List<int> { 1 ,2 ,4 ,5 ,6 ,7 };
      string selectQuery = "2";
      
      var result = from x in list
                   where x > Convert.ToInt32(selectQuery)
                   select x;
      

      另一种可能是

       list.Where(x => x > Convert.ToInt32(selectQuery)).ToList()
      

      通过这种方式,您可以在字符串选择查询中使用动态值进行查询。

      【讨论】:

      • 在您的示例中,选择部分的条件不是从字符串中检索到的。
      • @AndrewR ,在我的示例中,条件是在 selectquery 变量中指定的,我错了吗?
      • 在 selectQuery 变量中指定了 Where 条件。选择标准只是 x。您将 selectQuery 变量从 Select 移至 Where。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-07
      相关资源
      最近更新 更多