1

我有一个对象列表

public class foo
{
    public decimal val1 {get;set;}
    public decimal val2 {get;set;}
}

I val1andval2可以包含负值或正值。如果我有List<foo>items 一个干净的方法,我可以对它们进行排序,以便 val1 或 val2 中的负值不是列表中的第一项或最后一项。

我的列表大小可以在 1 到 100 之间。如果小于 3,我不需要排序。但如果是,>= 3我需要确保任何负值都不是列表中的第一个或最后一个。

4

2 回答 2

1

创建您自己的MyList:List<decimal>类并覆盖Add(..)Insert(...)Remove(..)其他方法以满足您的需求。

或者您可以使用ObservableCollectiondecimal监听CollectionChanged事件。

于 2012-07-31T05:19:17.550 回答
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);
    }
}
于 2012-07-31T05:29:53.957 回答