这里是我的代码与非零分母除分子总是给人在C#零
DataTable dt=STP_GetRenewalResultsReportData(Convert.ToDateTime("06-07-2015"),Convert.ToDateTime("06-07-2016")).Tables[0];
(
from r in
(
from d in dt.AsEnumerable()
group d by d.Field<string>("CityID") into grpCity
select new{
CityID = grpCity.Key,
City = (from g in grpCity where g.Field<string>("CityID") == grpCity.Key select g.Field<string>("City")).First().Trim(),
PotentialRenewalCount = (from g in grpCity where g.Field<string>("CityID") == grpCity.Key select g.Field<int>("PotentialRenewalCount")).Sum(),
// PotentialRenewalCount = 205,
PotentialRenewalSQRT = (from g in grpCity where g.Field<string>("CityID") == grpCity.Key select g.Field<double>("PotentialRenewalSQFT")).Sum(),
RENEWALCOUNT = (from g in grpCity where g.Field<string>("CityID") == grpCity.Key select g.Field<int>("RENEWALCOUNT")).Sum(),
// RENEWALCOUNT = 23,
RENEWALSQRT = (from g in grpCity where g.Field<string>("CityID") == grpCity.Key select g.Field<double>("RENEWALSQRT")).Sum(),
}
)
select new{
CityID=r.CityID,
City=r.City,
PotentialRenewalCount=r.PotentialRenewalCount,
PotentialRenewalSQRT=r.PotentialRenewalSQRT,
RENEWALCOUNT=r.RENEWALCOUNT,
RENEWALSQRT=r.RENEWALSQRT,
LeaseNoPercentage=Convert.ToDouble(12/30)
}
).Dump();
现在当你在看这条线在底部
LeaseNoPercentage = Convert.ToDouble(12/30 )
我正在将一个非常小的数30和作为结果我得到0时确切的结果是0.4
所以我的问题是我怎么能得到0.4在这个LINQ而不是0
感谢你的帮助
为什么不使用'12D/30d'(我不知道这是否正常工作) –
即使'转换.ToDouble((12/30));'可能会产生不同的结果。但是你真的每次都在做12/30吗?如果这就是你所需要的,为什么不能只有0.4的恒定值。 – pay
你真的想做什么?如果你所要做的只是分割2个int文字并得到一个double,那么你可能只需要'LeaseNoPercentage = 0.4' –