让value2 = Grp.Count(x => x.Column1< = 2&& x.Column2 ==" studentName")* 100 / Grp.Count(x => x.Column2 ==" studentName")
在这里,Bold有时为零,它给我无穷大,如果值为零,我想用1替换它。
答案 0 :(得分:0)
使用C#扩展程序,您可以执行以下操作。将此类添加到命名空间中。
public static class DataFormatter
{
public static int CheckForZero(this int value)
{
return value == 0? 1 : value;
}
}
然后你就可以做到这一点。
let value2 = Grp.Count(x => x.Column1 <= 2 && x.Column2== "studentName") * 100 /
Grp.Count(x => x.Column2== "studentName").CheckForZero(); //add this check
否则你可以使用下面常用的三元运算符。
var initialCount = Grp.Count(x => x.Column2== "studentName");
var refinedCount = initialCount == 0? 1: initialCount;
答案 1 :(得分:0)
使用外部变量或者如果你不介意性能命中,只需使用带三元运算符的Any()。如果谓词匹配至少一个值,Linq的Any将返回true,所以如果找到匹配,它将找到计数。否则它将在分母中返回1。
let value2 = Grp.Count(x => x.Column1 <= 2 && x.Column2== "studentName") * 100 / (Grp.Any(x => x.Column2 == "studentName") ? Grp.Count(x => x.Column2== "studentName") : 1)
使用外部变量如下所示:
let valueStudentName = Grp.Count(x => x.Column2== "studentName")
let value2 = Grp.Count(x => x.Column1 <= 2 && x.Column2== "studentName") * 100 / valueStudentName != 0 ? valueStudentName : 1