我有对象,我为它们分配了条目日期,因此它们按日期排序,列表中最旧的必须用红色填充, 我想做的是
之后,它们将显示其输入日期并订购,然后我将知道哪一个必须是第一个被删除。
当我删除一个时,下一个将是数字1,所有这些将被重新排序。
我的代码如下:
class Box
{
public string partNumber;
public int fifo;
public DateTime date;
public int quantity;
public int position;
public int orderColumn;
public int boxnum;
public Caja(string partNumber, int fifo, int quantity, int position, DateTime date, int orderColumn, int boxnum)
{
this.partNumber = partNumber;
this.fifo = fifo;
this.quantity = quantity;
this.position = position;
this.date = date;
this.orderColumn = orderColumn;
this.boxnum = boxnum;
}
}
这是订购对象的方法,以及它被卡住的地方:
class BoxCollection : List<box>
{
public Color GetBoxColor(Box box)
{
return GetBoxColor(IndexOf(box));
}
public Color GetBoxColor(int index)
{
var firstBox = this.OrderBy(c => c.date)
.First(c => c.partNumber == this[index].partNumber);
return index == IndexOf(firstBox) ? Color.Red : Color.Green;
}
public int GetBoxFifo(Box box)
{
return GetBoxFifo(IndexOf(box));
}
public int GetBoxFifi(int index)
{
var firstBox = this.OrderBy(c => c.date)
.First(c => c.partNumber == this[index].partNumber);
return index == IndexOf(firstBox);
}
}
我使用此方法对它们进行排序
foreach(var p in objCajaCollection.OrderBy(c => c.fecha))
{
p.fifo = i;
i++;
}
所以我的问题是我不知道如何使方法也按部件号分隔它们。 预期的输出是它显示多个列表,每个列表必须根据日期排序,但每个列表都有自己的顺序。
我的想法是你按日期订购了盒子,但每个零件编号必须有自己的订单,所以如果我取下一个X零件编号的盒子,Y零件编号的顺序不会完全不改变。
答案 0 :(得分:0)
(如果您尝试查找索引,则不支持原始索引 - )
当我找到一种方法在点击互联网时对ListView进行排序时,我添加了一个包含原始列表项目编号的列(但只是为了帮助识别原始列表中的项目)。
Image of part of a ListView showing indexes as strings. (The ColumnHeaders are actually clickable.)
答案 1 :(得分:0)
class Box
{
public string partNumber;
public DateTime date;
public int quantity;
public int position;
public int orderColumn;
public int boxnum;
public Box(string partNumber, int quantity, int position, DateTime date, int orderColumn, int boxnum)
{
this.partNumber = partNumber;
this.quantity = quantity;
this.position = position;
this.fecha = date;
this.orderColumn = orderColumn;
this.boxnum = boxnum;
}
}
class BoxCollection : List<Box>
{
public Color GetBoxColor(Box box)
{
return GetBoxColor(IndexOf(box));
}
public Color GetBoxColor(int index)
{
return GetBoxFifo(index) == 1 ? Color.Red : Color.Green;
}
public int GetBoxFifo(Box box)
{
return GetBoxFifo(IndexOf(box));
}
public int GetBoxFifo(int index)
{
return this.Where(c => c.partNumber == this[index].partNumber)
.OrderBy(c=> c.date).ToList().IndexOf(this[index]) + 1;
}
}