C#对于使用LINQ的列表循环
我正在使用LINQ并将列表返回到我的业务逻辑层。我正在尝试更改列表中的一个值(将“星级”评级更改为具有星级数的图像) 尽管计数器(i)似乎正在工作,但FOR循环工作不正常。第一次通过它时,它会在正确的IF处停止,然后在ELSE语句中弹出,所有值都以“star0.png”结尾。看起来好像我没有在列表中循环???提前谢谢C#对于使用LINQ的列表循环,c#,linq,list,for-loop,C#,Linq,List,For Loop,我正在使用LINQ并将列表返回到我的业务逻辑层。我正在尝试更改列表中的一个值(将“星级”评级更改为具有星级数的图像) 尽管计数器(i)似乎正在工作,但FOR循环工作不正常。第一次通过它时,它会在正确的IF处停止,然后在ELSE语句中弹出,所有值都以“star0.png”结尾。看起来好像我没有在列表中循环???提前谢谢 for (int i = 0; i < ReviewList.Count; i++) { string serviceCode = Revie
for (int i = 0; i < ReviewList.Count; i++)
{
string serviceCode = ReviewList[i].SERVICE.SERVICE_DESC;
if (serviceCode == "*")
{
ReviewList[i].SERVICE.SERVICE_DESC = "star1.png";
}
else if (serviceCode == "**")
{
ReviewList[i].SERVICE.SERVICE_DESC = "star2.png";
}
else if (serviceCode == "***")
{
ReviewList[i].SERVICE.SERVICE_DESC = "star3.png";
}
else if (serviceCode == "****")
{
ReviewList[i].SERVICE.SERVICE_DESC = "star4.png";
}
else
{
ReviewList[i].SERVICE.SERVICE_DESC = "star0.png";
}
}
for(int i=0;i
如果您知道每个项目都将由多个星星组成,为什么不这样做呢
for (int i = 0; i < ReviewList.Count; i++)
{
string serviceCode = ReviewList[i].SERVICE.SERVICE_DESC;
ReviewList[i].SERVICE.SERVICE_DESC = "star" + serviceCode.Length + ".png";
}
for(int i=0;i
如果所有值都以star0.png
结束,则您将在列表中循环。else
语句是为每个元素执行的唯一代码这一事实表明了一个逻辑错误——您是否打算这样做
string serviceCode = ReviewList[i].SERVICE.SERVICE_CODE;
我不认为这是循环正常工作的问题。。。您的语法很好,编写时将迭代
ReviewList.Count
#次
我将首先逐步检查并验证ReviewList
的内容
请告诉我您在双通和其他情况下发现了什么保护
for (int i = 0; i < ReviewList.Count; i++)
{
string serviceCode = ReviewList[i].SERVICE.SERVICE_DESC;
if(!serviceCode.Contains(".png")) { // once name set should not be modified
if(serviceCode.Contains("*"))
ReviewList[i].SERVICE.SERVICE_DESC = "star" + serviceCode.Length + ".png";
else
ReviewList[i].SERVICE.SERVICE_DESC = "star0.png";
}
}
您是否尝试在列表循环中使用foreach项?我觉得循环本身是正确的。在调试器中单步执行此操作时会发生什么?
serviceCode
s的值是什么?您是否确认了ReviewList
的内容?听起来可能是一个共享的参考。理论上,这并不能完全解释其他
的原因(尽管在实践中可能)。您需要某种排序或检查字符串的每个元素是否都是*符号,检查长度以确保长度不超过4这也是我的反应。。。“所有值”意味着循环确实有效。我在代码中注意到的唯一区别是,您已将SERVICE.SERVICE_DESC替换为SERVICE.SERVICE_代码。后者在我的表中是一个整数,是该表中的标识值。@Susan是的,我建议您可能是想放置SERVICE\u code
,而不是放置SERVICE\u DESC
——根据您的评论,显然不是这样。如果在else
语句中添加断点,那么serviceCode
的一些值是什么?谢谢您的帮助。如果你看答案0,你可以看到我最终是如何使它工作的,这部分是由于你的建议和上面的建议。非常感谢!这就是我所做的。(1) 将serviceCode更改为整数,其比较的值为表的标识值。因此,如果SERVICe_ID=1,则REVIEWLIST[I].SERVICe.SERVICe_DESC=star1.png。它工作得很好。由于我能够在UI中提取SERVICE.SERVICE_DESC,我不明白为什么它不能在我的总线逻辑层中工作。有什么想法吗???哦,好吧,谢谢你的帮助!!!如果不完全看代码,很难说。。。尽管我从评论中得知,您已经解决了您的问题,这是一件好事:)
ReviewList.ForEach(rs=>if(!rs.SERVICE.SERVICE_DESC.Contains(".png"))
{ rs.SERVICE.SERVICE_DESC =
"star" + rs.SERVICE.SERVICE_DESC.Length + ".png"});