我已经搜索并找到了许多几乎可以理解的答案,但要么是我完全疯了,要么就是它们不适合我的LINQ速记语法。我看了所有“类似重复的问题”。我也用了Google。也许我只是不知道该怎么问
我的代码现在只返回3个城市。我的简写适用于CityID == 1,但我不知道如何引用我插入的3个不同城市的数组:1,2,3。如果我使用CityID==1,则不会很好地扩展||城市ID ==2|| CityID==3语法,未来计划再增加10-100个城市。
public IList<Models.Cities> Cities { get;set; }
public async Task OnGetAsync()
{
Cities = (IList<Models.Cities>)await _context.tblCities.ToListAsync();
var citylist = new int[] { 1, 2, 4 };
Cities = Cities.Where(x => x.CityID==1).ToList();
}
**大编辑/答案:**Svyatoslav Danyliv的解决方案工作,这里是我如何使用它.我可以把各种各样的计算或标准堆叠起来,一次构建一个块,而不是一个巨大的查询,即“工作或不工作”。容易取出或添加我放在一起的小块。很多时候,这些Lambda表达式从发送到OnGetAsync()的内容中获取值。
public async Task OnGetAsync(string blah, int blahblah, int yadayada)
{
var citylist = new int[] { 1, 2, 4 };
var query = _context.tblCities.AsQueryable();
query = query.Where(c => citylist.Contains(c.CityID));
//SOME CALCULATIONS HERE
query = query.Where(c => c.xxx == blah);
//SOME CALCULATIONS HERE
query = query.Where(c => c.yyyy <= blahblah);
//ADD MORE HERE
query = query.Where(c => c.ooo= yadayada);
//AND FINALLY OPEN THE RAZOR PAGE
Cities = await query.ToListAsync();
}
这会增加开销吗?不确定,你告诉我。但是当涉及到规模时,我可以把所有不同的计算和标准放在一个巨大的查询中。当然,我可能会问Svyatoslav Danyliv非常感谢!
1条答案
按热度按时间tgabmvqs1#
过滤应该在使用
Contains
具体化之前完成。