2017-07-16 87 views
0

我使用C#core mvc的伟大的NinjaNye.SearchExtensions。这工作完美,但我需要动态搜索选项。那可能吗?或者我需要几个其他的块?动态Linq搜索使用NinjaNye.SearchExtensions

我有这样的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) 

我有布尔变量,其中以搜索(用户可与复选框,他希望搜索界面中选择) - search_in_title,search_in_manu,search_in_short,search_in_long,search_in_detail。在这种情况下,如何在一个字段中动态搜索,或者不需要5^2 if/else来查找不同的linq。

非常感谢 拉尔夫

回答

0

您可以添加.Where条款多次:

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

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

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

然而,你可以在这里尝试相同:

if (searchInTitleChecked) 
    tmpIQueryable = tmpIQueryable.Search(x => x.title.ToLower()); 

if (searchInShortChecked) 
    tmpIQueryable = tmpIQueryable.Search(x => x.short.ToLower()); 

tmpIQueryable = tmpIQueryable.ContainingAll(searchlist); 
+0

你好,感谢您的快速回复!不幸的是,它似乎没有以这种方式与NinjaNye.SearchExtensions一起工作:(如果我尝试这个解决方案,我会遇到一些错误 我使用这个组件,因为它很酷,可以灵活搜索列表中的一个或多个searchkeywords - 在所有字段中。 – Ralf