mar*_*ith 7 .net c# sorting visual-studio
任何人都可以帮助..我有一个像这样的通用列表
IList<itemTp> itemTps;
Run Code Online (Sandbox Code Playgroud)
itemTp基本上是一个类(有许多属性),其中一个属性就是"代码"
我需要能够按照我在另一个列表中设置的特定顺序对其进行排序.
这个列表是一个简单的列表,列出了顺序(从头到尾),比如说
code1 code3 code2 code5(注意它从1到3到2到5 - 这些是名称,它们可以被称为任何东西..重要的是订单,它与数字没有任何关系)
基本上我需要确保itemTp中的项目按照其他列表中的内容进行排序...
所以想象一下我的Ilist就像这个code1,code2,code3,code5 - 所以一旦排序完成了我的
IList<itemTp>
Run Code Online (Sandbox Code Playgroud)
将包含4个有序的类,并具有类似code1,code3,code2,code5(订单更改)的属性
任何想法如何做到这一点?
您需要创建一个IComparer,它将根据您的其他列表的状态比较项目.使用IComparer的优点是,如果需要优化,您将能够在类中构建缓存逻辑,以避免重复的IndexOf()查找.此外,您将能够维护多个可在适当时使用的"其他"列表.
class ItemTpComparer : IComparer<itemTp>
{
private IList<codeTp> otherList;
public ItemTpComparer(IList<codeTp> otherList)
{
this.otherList = otherList;
}
public int Compare(itemTp a, itemTp b)
{
return otherList.IndexOf(a.Code) - otherList.IndexOf(b.Code);
}
}
Run Code Online (Sandbox Code Playgroud)
并执行排序:
myList.Sort(new ItemTpComparer(otherList));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3369 次 |
| 最近记录: |