如何动态构建 linq OR 查询,其中多个列之一可以匹配搜索字符串?

Tar*_*zan 1 c# sql linq

如何动态构建 linqOR查询,其中多个列之一可以匹配搜索字符串?这在 SQL 中并不难做到。例如:

SELECT     ID, Title, Description, Comments, CreatedBy, CreatedOn, UpdatedBy, UpdatedOn
FROM         Category
WHERE     (Title LIKE '%Supplier%') 
    OR (Description LIKE  '%Supplier%')
Run Code Online (Sandbox Code Playgroud)

有时我需要添加OR (Comments LIKE '%Supplier%')或省略OR (Title LIKE '%Supplier%'),这就是我想动态构建它的原因。

我不认为这是一个重复的问题,因为潜在的重复问题并不是以可以使用 Stackoverflow 搜索功能找到的方式提出的。

eva*_*nal 5

您只需像在 C# 中的其他地方一样使用 or 运算符即可。下面的代码片段基本上应该可以满足您的要求。字符串文字可以是局部变量。

 MyObjects.Where(x => x.Someprop == "my string" || x.SomeOtherprop == "my string").Select(...)
Run Code Online (Sandbox Code Playgroud)

对于你的例子,你实际上想要的东西更像

 Where(x => x.Comments.Contains("Supplier") || x.Description.Contains("Supplier"))
Run Code Online (Sandbox Code Playgroud)

请注意,那些 SQL 通配符等效的 C# 方法将是:包含、开始于和结束于。您还可以使用 RegEx 来匹配更复杂的模式。