使用NinjaNye.SearchExtensions进行动态Linq搜索

时间:2017-07-16 16:59:43

标签: c# linq

我在c#core mvc中使用了很棒的NinjaNye.SearchExtensions。这很完美,但我需要动态搜索选项。那可能吗?或者我需要几个if else块吗?

我有这个linq

return tmpIQueryable
     .Where(c => data.Contains(c.id) && c.enddate > DateTime.Now.Date && c.startdate < untildate)
     .Include(c => c.DataContainer)

     .Search(x => x.title.ToLower(),
             x => x.manu.ToLower(),
             x => x.short.ToLower(),
             x => x.long.ToLower(),
             x => x.detail.ToLower())
     .ContainingAll(searchlist)

我有布尔变量在哪里搜索(用户可以在GUI中选择他想要搜索的复选框) - search_in_title,search_in_manu,search_in_short,search_in_long,search_in_detail。如果没有这种情况,我怎么能在一个字段中动态搜索5 ^ 2 if / else for different linq。

非常感谢 拉尔夫

1 个答案:

答案 0 :(得分:0)

您可以多次添加<td><%= check_box_tag "words_info[]",word.id,params[:words_info]==word.id,{id:id} %><label for="<%=id%>" >追加</label></td> <td><%= check_box_tag "words_info[]",word.id,params[:words_info].include?(word.id),{id:id} %><label for="<%=id%>" >追加</label></td> <td><%= check_box_tag "words_info[]",word.id,params[:words_info].to_s==word.id.to_s,{id:id} %><label for="<%=id%>" >追加</label></td> 子句:

.Where

这只是Linq的例子,但不是NinjaNye.SearchExtensions。如果它没有帮助,请忽略。

但是你可以在这里尝试相同的方法:

if (searchInTitleChecked)
    tmpIQueryable = tmpIQueryable.Where(r => r.Title.ToLower() == title);  

if (searchInShortChecked)
    tmpIQueryable = tmpIQueryable.Where(r => r.Short.ToLower() == short);