我有一个LINQ where语句,用于基于我过滤结果的几个参数:
.Where(x=> x.Sales>0 && (filterWord=="" ||x.Title.Contains(filterWord.ToLower())))
.OrderByDescending(x=>x.Sales)
.Skip(skip)
.Take(pageSize);
我想过滤掉所有满足要求的产品(> 0销售)......但是,对于过滤字参数,如果它的==“”,那么我不想把这个参数考虑进去。如果参数是!=“”,我想基于该参数+至少有1次销售的产品过滤掉我的收藏品。
这可以通过Where方法实现,如果是这样的话?
答案 0 :(得分:1)
你的解决方案应该有效,这是另一种方式
ffmpeg -i "D:\video\Mixer test.mp4" -c:v libx265 -preset medium -pass 1 -b:v 5000k -preset 5 -x265-params -strict-cbr -crf 28 -c:a aac -b:a 128k output.mp4
答案 1 :(得分:1)
.Where(x => filterWord == "" || (x.Title.Contains(filterWord.ToLower()) && x.Sales.Any())) .OrderByDescending(x => x.Sales) .Skip(skip) .Take(pageSize);
答案 2 :(得分:1)
对于第二部分,它将匹配空字符串或而不是空字符串和标题过滤器。
.Where(x=> x.Sales > 0 && ((filterWord == "") || (filterWord != "" && x.Title.Contains(filterWord)))
答案 3 :(得分:1)
为什么要尝试让数据服务器做一些最好用代码完成的事情?
string filterWord = "m2";
IQueryable<MyTable> q = db.MyTables;
if (!String.IsNullOrEmpty(filterWord))
q = q.Where(t=> t.Sales > 0 && t.Title.Contains(filterWord.ToLower()));
q = q.OrderByDescending(x=>x.Sales)
.Skip(skip)
.Take(pageSize);
q.Dump();
更新:
IQueryable<MyTable> q = db.MyTables.Where(t=> t.Sales > 0);
if (!String.IsNullOrEmpty(filterWord))
q = q.Where(t=>t.Title.Contains(filterWord.ToLower()));
连续两个Where()
将充当And。