【问题标题】:How to Build LINQ for this SQL Statement?如何为此 SQL 语句构建 LINQ?
【发布时间】:2019-04-15 08:40:27
【问题描述】:

我试图构建一个 LINQ 语句来满足这个 SQL 语句。

 SELECT * FROM [Access].[14 MATERIAL_LIST] WHERE MATERIAL_DESC LIKE
 '%GASKET%300%30%';

我已经尝试过使用循环。并且 linq 会像这样产生。

 SELECT * FROM [Access].[14 MATERIAL_LIST] WHERE MATERIAL_DESC LIKE
 '%GASKET%' AND MATERIAL_DESC LIKE '%300%' AND MATERIAL_DESC LIKE
 '%30%';

循环语句

foreach (var item in tanoList) {
    QueryML = QueryML.Where(z => z.Material_Desc.Contains(item)); }

【问题讨论】:

  • SQL 查询相当于单个QueryML.Where(z => z.Material_Desc.Contains("GASKET%300%30"))。 LINQ 不会生成您发布的内容,它会用% 包围谓词,从而生成您的原始表达式。为什么要使用循环?
  • 循环生成多个.contain(item)语句。
  • 我再说一遍,这个问题只有 一个 值。如果您想搜索多个值,请在问题中明确说明。人们无法回答您尚未提出的问题。
  • tanoList 中存储了哪些值?你在使用 EF Core 吗?

标签: c# .net linq lambda


【解决方案1】:

你应该反过来处理问题。这会让你到达那里;

QueryML.Where(z =>tanoList.Any(item =>z.Material_Desc.Contains(item)));

【讨论】:

  • 能否请将此 sql 语句转换为 LINQ "SELECT * FROM [Access].[14 MATERIAL_LIST] WHERE MATERIAL_DESC LIKE '%GASKET%300%30%';"
  • 让我看看,我们实际上是在寻找自定义字符串比较
  • 我正在尝试使用 LINQ 生成 LIKE ''%GASKET%300%30%'" 语句。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 2011-01-24
  • 2015-04-12
  • 2012-05-22
相关资源
最近更新 更多