C# 来自数据源的Linq查询,其中。。。例如“%”或。。。比如“%”

C# 来自数据源的Linq查询,其中。。。例如“%”或。。。比如“%”,c#,database,linq,select,filter,C#,Database,Linq,Select,Filter,我试图从数据库中选择所有字段,该数据库包含可以由用户填充的列表中包含的任何字符串。 对于我来说,使用纯SQL和一个类似 WHERE myfield LIKE '%nam%' OR myfield LIKE '%cod%' OR myfield LIKE '%big%' 但我需要用C和Linq来做。我搜索了几个解决方案,其中一些建议我使用.Any或.Contains,但我没有找到如何应用于我的案例:- 这是我能达到的最接近的结果: var query = DataSource.Docs();

我试图从数据库中选择所有字段,该数据库包含可以由用户填充的列表中包含的任何字符串。 对于我来说,使用纯SQL和一个类似

WHERE myfield LIKE '%nam%' OR myfield LIKE '%cod%' OR myfield LIKE '%big%'
但我需要用C和Linq来做。我搜索了几个解决方案,其中一些建议我使用.Any或.Contains,但我没有找到如何应用于我的案例:-

这是我能达到的最接近的结果:

var query = DataSource.Docs();

...

IList<string> nameFilter = new List<string>() {"nam", "cod", "big"};                    
query = query.Where(x => x.NomeFile.Contains(nameFilter.FirstOrDefault()));
不管怎么说,使用这个愚蠢的代码,我只过滤包含列表中第一个元素的元素FirstOrDefault让我们忽略所有其他元素

有人能帮我找到正确的路吗?

你要找的是:

query.Where(x => nameFilter.Any(s => x.NomeFile.Contains(s)));
你试过这个吗? query=query.Wherex=>nameFilter.Anyn=>x.NomeFile.Containsn; 或 query=query.Wherex=>nameFilter.Anyn=>x.NomeFile.IndexOfn>=0;

这与另一个帖子的答案毫无不同。谢谢你,迈克尔!我工作得很有魅力!非常感谢。我尝试了Any和Contains的组合,但完全没有顺序。