Linq检查where子句中的百分比

时间:2017-01-30 05:06:15

标签: c# .net linq

我正在尝试检查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子句中获取百分比检查?为什么上面的代码不起作用?

3 个答案:

答案 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