我有一个对象列表
public class foo
{
public decimal val1 {get;set;}
public decimal val2 {get;set;}
}
我val1
和val2
可以包含负值或正值。
如果我有一个List<foo>items
,那么我可以对它们进行排序,以便val1或val2中的负值不是列表中的第一个或最后一个项目。
我的列表大小可以从1到100.如果它小于3我不需要排序。但如果是>= 3
,我需要确保任何负值不在列表的第一位或最后一位。
答案 0 :(得分:1)
创建您自己的MyList:List<decimal>
课程并覆盖Add(..)
,Insert(...)
,Remove(..)
以及其他方法以满足您的需求。
或者您可以使用decimal
的{{3}}并听取CollectionChanged
事件。
答案 1 :(得分:1)
如果存在,您会尝试将“正”值推送到列表的头部和尾部:
if (myList.Count > 2)
{
//push a positive to the head of the list
var firstPositive = myList.FirstOrDefault(x => x.val1 > 0 && x.val2 > 0);
if (firstPositive != null)
{
myList.Remove(firstPositive);
myList.Insert(0, firstPositive);
}
//push a positive to the tail of the list
var secondPositive = myList.Skip(1).FirstOrDefault(x => x.val1 > 0 && x.val2 > 0);
if (secondPositive != null)
{
myList.Remove(secondPositive);
myList.Add(secondPositive);
}
}