我正在做一个与工资单相关的项目,我将为每个已经运行的工资单提供一些payperiodnumbers
。我将在网格视图中显示所有工资单,并显示相应的工资期数。
假设我绑定到网格时得到以下结果
现在从网格中,如果我选择1并点击删除,我想显示一条错误消息,说明您必须先删除最长工资期。
就像那样,如果我的最大工资期数为7
,如果用户选择1,2,3,4,5,6
并尝试删除我想显示相同的错误。我将选定的ID's
保存在一个arraylist中,所以任何人都可以帮助我如何检查我指定的条件。我可以使用查询获得最大的payperiodid,但我想做的其余代码。
我正在使用2.0
,所以没有必要在这里使用LINQ
。任何人都可以帮助我
正如Azodious
指出的那样,我表现出一些应该有效的条件,有些则不是
如果最大数量为7
,如果我选择1,5,7
我想显示错误消息。
如果我选择5,6,7
,则应将其删除。
答案 0 :(得分:0)
这样的事情:
selectedNumbers.Sort();
selectedNumbers.Reverse();
int maxPeriodNumber = 5; // This you know
int lastValue = (int)selectedNumbers[0];
if (lastValue < maxPeriodNumber)
{
// Highest selected number is smaller than required, warn user or throw exception
return;
}
foreach (int val in selectedNumbers)
{
if (val < (lastValue - 1))
{
// There is a gap in the numbering, warn user or throw exception
return;
}
lastValue = val;
}
// When you end up here, everything is ok and you can delete the items whose numbers are in the list
答案 1 :(得分:0)
显示缺失数字的简单逻辑
ArrayList a = new ArrayList();
List<int> lst = new List<int>();
lst.Add(1);
lst.Add(3);
lst.Add(5);
int fst = (int)lst[0];
int last = 0;
for (int i = 0; i < lst.Count; i++)
{
last = (int)lst[i];
}
for (int k = fst; k <= last; k++)
{
if (k == fst | k == last)
{
}
else
{
a.Add(k);
a.Add(" ");
}
}
Label1.Text = "Missing Numbers are" + " " + System.String.Concat(a.ToArray());