首页 > 解决方案 > C# Linq 不能使用“大于”运算符

问题描述

每次我尝试在我的函数中运行以下句子时:

var comission = await _context.Comissions.FirstOrDefaultAsync(c => 
  c.CountryReceiverId == receiverCountryId && 
  c.CountrySenderId == senderCountryId);

var comissionRange = await _context.ComissionRanges
  .Where(c => c.MinAmount <= amount && c.MaxAmount >= amount)
  .FirstOrDefaultAsync(c => c.ComissionId == comission.Id);

它给了我以下错误:

'DbSet<ComissionRange> .Where(c => c.MinAmount <= __amount_0 && c.MaxAmount >= __amount_0)'无法翻译LINQ 表达式。以可翻译的形式重写查询,或通过插入对 AsEnumerable()、AsAsyncEnumerable()、ToList() 或 ToListAsync() 的调用显式切换到客户端评估。

该错误专门发生在comissionRange查询中,我注意到以下内容,例如>=or<=运算符是否存在问题,例如,如果我像这样修改此类查询:

var comissionRange = await _context.ComissionRanges
  .Where(c => c.MinAmount == 501 && c.MaxAmount == 1000)
  .FirstOrDefaultAsync(c => c.ComissionId == comission.Id);

它完美无缺!就像问题是因为我使用了>=and<=运算符,那么重写此查询并使其工作的正确方法是什么?

标签: c#sqllinq

解决方案


推荐阅读