1

オブジェクトのリストがあります

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

Ival1val2は、負の値または正の値の両方を含めることができます。val1またはval2のいずれかの負の値がリストの最初または最後の項目にならList<foo>items ないように、それらを並べ替えることができるクリーンな方法があります。

リストのサイズは1から100までです。3未満の場合は並べ替える必要はありません。しかし、そうであれば>= 3、負の値がリストの最初または最後にないことを確認する必要があります。

4

2 に答える 2

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 に答える
1

独自のクラスを作成し、ニーズに合わせて、、、およびその他のメソッドをMyList:List<decimal>オーバーライドします。Add(..)Insert(...)Remove(..)

または、のObservableCollectionを使用して、イベントdecimalをリッスンすることができます。CollectionChanged

于 2012-07-31T05:19:17.550 に答える