我正在尝试检查Linq
中where子句中的某些百分比值以下是我的代码
List<string> v = await context.Categories.Where(w =>(w.id / 2) * 100 == 50)
.Select(w => w.id.ToString()).ToListAsync();
问题是有记录符合条件但没有记录选择。我尝试使用Convert.ToDecimal(w.id/2)
,但它也无效。
如何在where子句中获取百分比检查?为什么上面的代码不起作用?
答案 0 :(得分:3)
如何改变操作顺序......
List<string> v = await context.Categories.Where(w => 100 * w.id / 2 == 50)
.Select(w => w.id.ToString()).ToListAsync();
或
List<string> v = await context.Categories.Where(w => 50 * w.id == 50)
.Select(w => w.id.ToString()).ToListAsync();
或
List<string> v = await context.Categories.Where(w => w.id == 1)
.Select(w => w.id.ToString()).ToListAsync();
答案 1 :(得分:2)
如果id是一个整数,它确实支持全数,所以1/2 = 0.你需要在操作之前强制转换为double(一种支持小数位的类型)。
List<string> v = await context.Categories.Where(w =>(w.id / 2.0) * 100 == 50)
.Select(w => w.id.ToString()).ToListAsync();
答案 2 :(得分:2)
除非我遗漏了某些内容,否则你似乎不需要计算:
w =>(w.id / 2) * 100 == 50
可以写成
w => w.id == 1