我有这样的代码
foreach (string item in summaryList)
{
//kelola data
if(item.Contains("Central"))
{
targetSummary = System.Math.Round(_context.Target.Where(x => x.Month == monthId && x.Region.Contains("Central") && x.Type == "SellThru").Select(y => y.Target1 ?? 0).Sum(), 2);
}
if (item.Contains("East"))
{
targetSummary = System.Math.Round(_context.Target.Where(x => x.Month == monthId && x.Region.Contains("East") && x.Type == "SellThru").Select(y => y.Target1 ?? 0).Sum(), 2);
}
if (item.Contains("West"))
{
targetSummary = System.Math.Round(_context.Target.Where(x => x.Month == monthId && x.Region.Contains("West") && x.Type == "SellThru").Select(y => y.Target1 ?? 0).Sum(), 2);
}
else
{
targetSummary = System.Math.Round(_context.Target.Where(x => x.Month == monthId && x.Region.Contains(item) && x.Type == "SellThru").Select(y => y.Target1 ?? 0).Sum(), 2);
}
}
并且summaryList数据是
“ID-TR-Central,ID-TR-Java,ID-TR-East,ID-TR-West”
我不知道为什么
item.Contains(“Central”)和item.Contains(“East”)
返回false,使targetSummary值为无穷大,但
item.Contains( “西”)
做得很好
我只是不知道我的错误是什么。抱歉我的英语,我希望你理解,我感谢你的帮助。 感谢
答案 0 :(得分:1)
首先:发布用于填充summaryList的代码。我认为你的意思是{"ID-TR-Central", "ID-TR-Java", "ID-TR-East, "ID-TR-West"}
,而不是"ID-TR-Central, ID-TR-Java, ID-TR-East, ID-TR-West"
。
如果您确实要输入单个字符串,那么每个条件都将匹配,targetSummary将被覆盖。
如果没有,你仍然有问题,因为你的最后一个if语句包含一个else分支。您可以更清楚地看到如果您的字符串不包含重新格式化的“West”会发生什么:
foreach (string item in summaryList)
{
//kelola data
if(item.Contains("Central"))
{
targetSummary = System.Math.Round(_context.Target.Where(x => x.Month == monthId && x.Region.Contains("Central") && x.Type == "SellThru").Select(y => y.Target1 ?? 0).Sum(), 2);
}
if (item.Contains("East"))
{
targetSummary = System.Math.Round(_context.Target.Where(x => x.Month == monthId && x.Region.Contains("East") && x.Type == "SellThru").Select(y => y.Target1 ?? 0).Sum(), 2);
}
if (item.Contains("West"))
{
targetSummary = System.Math.Round(_context.Target.Where(x => x.Month == monthId && x.Region.Contains("West") && x.Type == "SellThru").Select(y => y.Target1 ?? 0).Sum(), 2);
}
else
{
targetSummary = System.Math.Round(_context.Target.Where(x => x.Month == monthId && x.Region.Contains(item) && x.Type == "SellThru").Select(y => y.Target1 ?? 0).Sum(), 2);
}
前两个条件并不重要,因为你的最终条件强迫任何没有“West”的东西进入最后的其他分支。无论以前的匹配条件如何,都会覆盖targetSummary。