关于builder.appendline()的使用有个问题请教一下大神们

lethe7868 2016-01-25 03:40:39
foreach (DataRow dataRow in DataTableAll.Rows)
{
if (int.Parse(dataRow[All.DAYS].ToString()) > 30)
{
pilla = dataRow[All.NAME].ToString();
int days = int.Parse(dataRow[All.DAYS].ToString());
builder.AppendLine(pilla + days + "天");
}
else
{
if (dataRow[All.NEW].ToString() == "N")
{
string code = dataRow[All.CODE].ToString();
int days = 0;
foreach (DataRow newdataRow in DataTableAll.Rows)
{
if (code == newdataRow[All.CODE].ToString())
{
days += int.Parse(newdataRow[All.DAYS].ToString());
if (days > 30)
{
pilla = newdataRow[All.NAME].ToString();
builder.AppendLine(pilla + days + "天");
}
}
}
}
else if (dataRow[All.NEW_ORDER].ToString() == "Y")
{
string code = dataRow[All.CODE].ToString();
int days = 0;
foreach (DataRow newdataRow in DataTableAll.Rows)
{
if (code == newdataRow[All.CODE].ToString())
{
days += int.Parse(newdataRow[All.DAYS].ToString());
if (days > 30)
{
pilla = newdataRow[All.NAME].ToString();
builder.AppendLine(pilla + days + "天");
}
}
}
}
}
}

现在的问题就是 例如 在符合条件>30的条件下 a物品存入n天保存之后 再输入a物品x天 这样就最后显示的就会是
物品a n+x天
物品a n+x天
就是说最后有多少个重复的a物品 显示builder.appendline 的时候就会重复多少遍
应该如何解决这个问题?我只需要显示一遍
...全文
252 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2016-01-26
  • 打赏
  • 举报
回复
那你应该先对 datatable进行去重。 也就是 sql数据库,取出数据的时候,已经distinct了。
lethe7868 2016-01-26
  • 打赏
  • 举报
回复
引用 4 楼 FoxDave 的回复:
先去重
请问应该怎么先去重? 因为我不知道会不会有重复输入的 所以才要foreach套foreach 将所有重复的物品的天数加起来 判断是否会超过
Justin-Liu 2016-01-26
  • 打赏
  • 举报
回复
先去重
lethe7868 2016-01-25
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
能解释下你的业务逻辑吗?为什么要foreach套foreach
我是先判断首先有没有哪一个物品输入天数的时候直接就超过30天 如果为否则判断一下当前输入的这物品是已经保存过的还是新加入的 然后套foreach 如果所有的物品中还有a物品就把天数全部加起来 判断是否超过 刚才想了想 好像那个else if是多余的 现在直接将第一个else下的那个if (dataRow[All.NEW].ToString() == "N")和if (dataRow[All.NEW].ToString() == "Y")取消掉 只留一段
lethe7868 2016-01-25
  • 打赏
  • 举报
回复
引用 1 楼 starfd 的回复:
能解释下你的业务逻辑吗?为什么要foreach套foreach
是这样的 因为按照正常的逻辑思维来操作的话 是不用foreach套foreach的 很简单就能实现了 但是因为很多使用者并不能规范操作 有很多奇葩的操作方式 不能禁止他们不那样操作 所以只能在功能上将所有可能奇葩操作都考虑进去 来实现这个不能超过30天的功能。 我才做码农没多久 之前写了两个版本 builder.appendline显示倒是没问题 但是测出来还是有部分奇葩操作导致超过30天的功能无法卡控住,我不知道还能怎么写 今天突然想到了所以就试一试 foreach套foreach 现在功能上是完全卡住了所有可能有的奇葩操作 但是builder.appendline的显示上就有问题了
  • 打赏
  • 举报
回复
能解释下你的业务逻辑吗?为什么要foreach套foreach

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧