我试图从包含列表中包含的任何字符串的db中选择所有字段(可以从用户填充)。 我很容易通过纯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让我们忽略所有其他元素)
有人能帮我找到正确的方法吗?
答案 0 :(得分:5)
您正在寻找:
query.Where(x => nameFilter.Any(s => x.NomeFile.Contains(s)));
答案 1 :(得分:1)
query = query.Where(x => nameFilter.Any(n => x.NomeFile.Contains(n)));
要么
query = query.Where(x => nameFilter.Any(n => x.NomeFile.IndexOf(n) >= 0));