我有一个问题,我似乎无法通过搜索找到答案(或者我正在寻找完全错误的东西!)。我有一个名为“Top 10”的项目列表,这个项目是从我的DB(SortedList,其中int是position,string是item)填充的sortedlist项目。我希望能够将物品移动起来单击按钮向下按列表顺序,然后将新订单保存回DB。我对数据库部分没问题,这只是我正在努力的重新排序 - 这是一个正确的集合列表吗?
非常感谢您提供的任何建议。
答案 0 :(得分:6)
SortedList用于在您添加或删除项目时维护SortedList中的顺序。
您应该创建对象的自定义列表,然后对该对象的属性进行排序。
因此,如果您在数据库中的条目是这样的,您可以将其放在一个对象中,将其添加到一个列表中,然后使用Lambda对其进行排序,您可以根据自己的标准对其进行排序
public class LeaguePosition
{
public int Position { get; set; }
public string Team { get; set; }
}
List<LeaguePosition> League = new List<LeaguePosition>();
League.Add(new LeaguePosition() { Position = 2, Team = "Wolves" });
League.Add(new LeaguePosition() { Position = 3, Team = "Spurs" });
League.Add(new LeaguePosition() { Position = 1, Team = "Villa" });
League.Sort((teamA, teamB) => teamA.Position.CompareTo(teamB.Position));
然后,您还可以使用RemoveAt()和Insert()将项目移动到列表中的自定义位置。
LeaguePosition teamToMove = League[1];
League.RemoveAt(1);
League.Insert(2, teamToMove);
答案 1 :(得分:3)
不,SortedList将按照排序(字母/数字)顺序保持事物。你想要一个简单的列表,它可以让你把它拉出来并将它们插入不同的位置。
答案 2 :(得分:0)
SortedList将强制每个项目跟踪其在列表中相对于其他项目(您的int位置)的位置。这应该是Collection的责任,所以你应该使用某种Collection,它允许你上下移动东西而不必手动纠正每个项目。
答案 3 :(得分:0)
我想说SortedList正是你想要的。当您从数据库中获取数据时,您希望根据位置字段(我可以从您的OP中了解)将其保持在顺序中。我假设你将有一个包含你从数据库中获取的数据的类。为了使数据保持正确的顺序,您需要在自定义类中实现IComparable接口,以便SortedList知道使用哪些值来保持列表的顺序。这样,当您添加/删除项目时,您将按正确的顺序保留它们。
您可以使用通用列表&lt;&gt;但是你必须自己编写所有代码来对物品进行排序,SortedList已经这样做了,为什么要重新发明轮子?
请查看此页面以获取更多信息:
http://www.dotnetspider.com/resources/4679-Applying-custom-sort-SortedList.aspx