【问题标题】:How to get the List of products name whose name starts with numbers using LINQ query.? [closed]如何使用 LINQ 查询获取名称以数字开头的产品名称列表。? [关闭]
【发布时间】:2020-12-08 03:33:18
【问题描述】:

我有一个表,我想从中检索名称以 0 到 9 开头的产品列表。 代码sn-p。

List<string> searchItems = new List<string> { "1", "2", "3", "4", "5", "6", "7", "8", "9", "0" };

.....Where(x=> searchItems.Any(y=> y.StartsWith(x.ProductName))).ToList();

我没有得到产品列表,得到 0 条记录,任何人请建议我一个更好更正确的查询。 提前致谢。

【问题讨论】:

    标签: c# linq linq-to-sql linq-to-entities


    【解决方案1】:

    尝试x.ProductName.StartsWith(y) 而不是y.StartsWith(x.ProductName)

    你现在的做法是问"1".StartsWith("Your Product name")

    【讨论】:

      【解决方案2】:

      让我们使用正确的标识符。这将帮助您找到错误:

      var result = products.Where(product => searchItems.Any(
          searchItem => searchItem.StartsWith(product.ProductName)))
      

      因此,您只保留那些具有 ProductName 的产品,其中至少有一个以该名称开头的搜索项。

      • 您的搜索项:1 2 3 4 5 6 7 8 9
      • 产品名称 = 19987。

      是否有任何以产品名称 19987 开头的搜索项?

      我有一个表,我想从中检索名称以 0 到 9 开头的产品列表。

      如果你改写一下,查询会很简单:

      我想查询所有 ProductName 以数字开头的产品

      var productsWithDigitStartName = dbContext.Products
          .Where(product => Char.IsDigit(product.ProductName[0]));
      

      【讨论】:

      • searchItems 是单个字符串的列表。 product.ProductName 不太可能是单个字符串,因此 searchItem.StartsWith(product.ProductName) 几乎总是可能是 false。现在product.ProductName.StartsWith(searchItem) 更可能是 OP 想要的。
      猜你喜欢
      • 2012-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-04
      • 2014-11-02
      • 1970-01-01
      • 2022-12-04
      相关资源
      最近更新 更多