我在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。
非常感谢 拉尔夫
答案 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);