当我的模型有值时,我可以使用此代码轻松获得平均值
@Model.Where(a => a.count!= null).Average(a => a.totalday).ToString()
例如:
count = 7 totalday = 3 average = 2.33
但是当我的模型值等于null或为零时,我无法获得平均值。如您所知,我们不能将0除以0或将null除以null。
我的意思是;
count = 0或null; totalday = 0或null; average = ????
如果所有值都为null,我如何将表格写入" 0"或类似&#34的字符串;没有任何平均值"
我尝试了很多东西,但是我收到了错误。
答案 0 :(得分:17)
这实际上取决于你想做什么。如果您对平均值有某种默认值,那么您可以使用DefaultIfEmpty
@Model.Where(a => a.count!= null)
.Select(a => a.totalday)
.DefaultIfEmpty(0)
.Average()
.ToString()
但如果最好完全显示其他内容,那么你必须首先检查过滤后的序列中是否有任何元素。
答案 1 :(得分:2)
列表中的零没有问题。
var list = new List<int>{ 0,1,2,3,4,5,6};
var avg = list.Average(); // avg = 3
您可能希望处理空值,但您可以使用以下方法轻松过滤它们:
var not_null_list = some_list.Where(item => item != null);
从那里开始,你应该没问题(除非你需要考虑无效的数字,我觉得这没有多大意义......)
修改强>:
我看到了你的困境。在这种情况下我会建议以下内容:)
var list = new List<int>{};
string answer;
if (list.Any ())
answer = list.Average();
else
answer = "User is a shmartsy pants. Try again with valid data";