C# 中间的排序列表在中间。
我有一张物品清单C# 中间的排序列表在中间。,c#,.net,sorting,C#,.net,Sorting,我有一张物品清单 public class foo { public decimal val1 {get;set;} public decimal val2 {get;set;} } Ival1和val2可以包含负值或正值。 如果我有一个列表项是否有一种干净的方法可以对它们进行排序,以便val1或val2中的负值不是列表中的第一项或最后一项 我的列表大小可以从1到100。如果小于3,则不需要排序。但是如果它是=3,我需要确保任何负值都不是列表中的第一个或最后一个。创建您自己的M
public class foo
{
public decimal val1 {get;set;}
public decimal val2 {get;set;}
}
Ival1
和val2
可以包含负值或正值。
如果我有一个列表项
是否有一种干净的方法可以对它们进行排序,以便val1或val2中的负值不是列表中的第一项或最后一项
我的列表大小可以从1到100。如果小于3,则不需要排序。但是如果它是
=3
,我需要确保任何负值都不是列表中的第一个或最后一个。创建您自己的MyList:list
类并重写添加(…)
,插入(…)
,删除(…)
和其他适合您需要的方法
或者,您可以使用decimal
并侦听CollectionChanged
事件。如果列表的开头和结尾存在“正值”,则尝试将其推送到列表的开头和结尾:
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);
}
}
可能吗?它们可能都是负面的。我也很好奇,你能用一个更具描述性的例子来详细说明吗?如果它们都是正面的或是负面的,那么顺序就不重要了。如果比我想的解决方案可读性强得多=)