我有两个IQueryable查询:
IQueryable<Ad> list1 = db.Ads.Where(x=>x.isModerated == true);
IQueryable<Ad> list2;
if(something == true)
{
list2 = list1.Where(x=>x.TypeId == 2)
// is it going to be the same as query below?
IQueryable<Ad> list1 = db.Ads.Where(x=>x.isModerated == true && x.TypeId == 2)
}
,如果我想使用OR(||)运算符获取数据该怎么办?
在我要迭代此查询之前,我相信它将是一个数据库调用。对?
答案 0 :(得分:2)
与下面的查询相同吗?
是
如果要使用OR(||)运算符获取数据该怎么办?
这样做的资源消耗将大大减少:
IQueryable<Ad> list1 = db.Ads.Where(x=>x.isModerated);
IQueryable<Ad> list2;
if(something == true)
{
list2 = list1.Where(x=>x.TypeId == 2)
}
else
{
list2 = db.Ads.Where(x=>x.isModerated || x.TypeId == 2)
}
但是如果由于某种原因您不想这样做,您可以这样做:
list2 = list1.Union(db.Ads.Where(x=> x.TypeId == 2))
将为您提供相同的结果集
答案 1 :(得分:1)
正如我所注意到的,您确实有一个查询,其中有一个名为list1的where子句,如果确实具有相等的值,则将添加另一个where子句,以便采用我认为更精简,更简单的方法。
IQueryable<Ad> list1 = db.Ads.Where(x => (x.isModerated == true) && (something != true || x.TypeId == 2));
List<Ad> fetchedAds = list1.ToList();
答案 2 :(得分:0)
export class heroStepComponent implements OnInit {
constructor(){
...
}
ngOnInit(){
...
}
stepChanged(event, stepper){
stepper.selected.interacted = false;
}
}
是的-会一样。