[英]Adding a sort column into list C#
我构建了一个List <MyObject>
,它具有特定顺序的对象集合,但是在这个列表中我想管理一种SORT列,但是由我自己创建。
我的意思是,例如我想手动枚举10个对象; 2前7个顺序从1到7,最后3个从8到10乘以-1所以最后我会有我的清单
List[0] {1, obj1}
List[1] {2, obj2}
List[2] {3, obj3}
List[3] {4, obj4}
List[4] {5, obj5}
List[5] {6, obj6}
List[6] {7, obj7}
List[7] {-8, obj8}
List[8] {-9, obj9}
List[9] {-10, obj10}
然后最后我可以对它进行排序(升序),我将有-10, -9, -8, 1, 2, 3, 4, 5, 6, 7
有没有办法做到这一点,避免这么多循环,并使用linq
(我希望)和我可以使用的列表类型?
编辑
我想要做的是收集要保存在db中的对象,但是它们需要按序列(FK)进行,但是如果我认识到它们中的3个将被删除,则它们必须处于正确的顺序以避免FK冲突。 所以我认为这是最好的事情。 建议?
这里以Lync为例:
void Main()
{
// Create the list
var items = Enumerable.Range(1, 10)
.Select (index => new Holder {
Name = "Info " + index,
SortOrder = index
}
)
.ToList();
//set sort order
items.Skip(7)
.ToList()
.ForEach(itm => itm.SortOrder = itm.SortOrder * -1);
// Now sort
var sorted = items.OrderBy (itm => itm.SortOrder);
sorted.Dump();
/* Output
Name SortOrder
Info 10 -10
Info 9 -9
Info 8 -8
Info 1 1
Info 2 2
Info 3 3
Info 4 4
Info 5 5
Info 6 6
Info 7 7
*/
}
// Define other methods and classes here
public class Holder
{
public string Name { get; set; }
public int SortOrder { get; set; }
}
在排序时,使您的数字列完全正确。
如果要使用LINQ扩展方法,请使用OrderBy,如下所示:
var orderedList = list.OrderBy(i => Math.Abs(i.Number));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.