日期:2014-05-17  浏览次数:20811 次

C#中的for和do while
下面这个获取等级的方法,里面的do while怎么改成for循环?

public int GetLevel(int menuId){
  int level = 1;
  do{
  menuId=Convert.toInt32(DBHelper.ExecuteScalar("select PId from MenuType where level="+menuId));
  if(menuId!=0)
  level++;
  }while(menuId!=0)
  return level;
}

在线等候。。。哪位知道?

------解决方案--------------------
menuId=Convert.toInt32(DBHelper.ExecuteScalar("select PId from MenuType where level="+menuId));
for(int i;i<menuid;i++)
{
if(menuId!=0)
level++;
}while(menuId!=0)
}
------解决方案--------------------
C# code

for(;;)
{
menuId=Convert.toInt32(DBHelper.ExecuteScalar("select PId from MenuType where level="+menuId));
  if(menuId!=0)
  level++;
else
return level;
}

------解决方案--------------------
楼主是不是原方法写错了?
这一句
DBHelper.ExecuteScalar("select PId from MenuType where level="+menuId))
应该是
DBHelper.ExecuteScalar("select PId from MenuType where level="+level))
吧?

public int GetLevel(int menuId){
for(level=1;level++;level>0)
{
menuId=Convert.toInt32(DBHelper.ExecuteScalar("select PId from MenuType where level="+level));
if(menuId!=0)
break;
}
return level;
}
------解决方案--------------------
C# code

for(;;)
{
menuId=Convert.toInt32(DBHelper.ExecuteScalar("select PId from MenuType where level="+menuId));
  if(menuId!=0)
  level++;
else
return level;
}

------解决方案--------------------
楼上不错
------解决方案--------------------
楼主代码是不是没贴完整,如果select PId from MenuType where level="+menuId这个得到的值不为0,那就无限循环。
------解决方案--------------------
探讨

对不起,刚才修改的时候打错了。。应该是:
public int GetLevel(int menuId){
for(level=1;;level++)
{
menuId=Convert.toInt32(DBHelper.ExecuteScalar("select PId from MenuType where level="+level));
if(menuId……