使用字符串列表进行实体框架过滤

时间:2015-03-28 11:20:30

标签: c# linq entity-framework

我想过滤结果根据字符串列表,如下所示:

List<string> filters = {"a", "b", "c", "d"};
var results = (from R in db.Entries 
               where R.word.StartsWith(filters[0])
               ||R.word.StartsWith(filters[1])
               ||R.word.StartsWith(filters[2])
               ||...

我不知道我的过滤器列表的长度如何在LINQ中动态查询?

提前致谢。

2 个答案:

答案 0 :(得分:5)

这在Linq中有点不同,反之亦然

使用.Contains()

这样的事情:

from r in db.entries
where filters.contains (r.word.substring(0,1))

答案 1 :(得分:5)

你应该能够这样做:

var results = db.Entries 
    .Where(r => filters.Any(f => r.word.StartsWith(f)));

扩展方法Any是一种折叠&#34;将一系列OR ||应用于列表到一个调用中。