我有一些类型的数组
private string[] linkTypes = {
"dog",
"cat",
// and so on ..
};
是的,我可以使用
enum
,但在这种情况下,它必须是一个数组 字符串。
所以现在我有一个名为" LinkElement"
的对象列表private List<LinkElement> links = new List<LinkElement>();
并且这些对象具有一个名为&#34; Type&#34;
的字符串属性string linkType = links[index].Type;
如果linkTypes包含元素&#34; dog&#34;和&#34; cat&#34;,我的链接只能有#34; dog&#34;或者&#34; cat&#34;作为他们的类型。
我想对列表进行排序&#34;链接&#34;按linkTypes的顺序。
表示列表顺序包含具有类型&#34; dog&#34;的链接。首先和之后的链接类型&#34; cat&#34;来了。
List<LinkElement> sortedLinks = ; // sort links
for (int i = 0; i < sortedLinks.Count; i++)
{
LinkElement currentLink = sortedLinks[i];
Console.WriteLine(currentLink.Type);
}
// Write down dogs first, cats after
有人能帮助我吗?
答案 0 :(得分:5)
假设=ROUND(AVERAGE(OFFSET(C7:J30,ROW(C7:J30)-ROW(C7),0,1)),2)
(私有字符串数组)与linkTypes
(links
的列表)在同一个类中,您可以使用LINQ的OrderBy和简单的lambda表达:
LinkElement
答案 1 :(得分:0)
比较诸如“字母顺序”(字符串)“更大数字”(数字类型)等是使用IComparable接口完成的。您可以在自定义类中实现此接口,以使实例按您喜欢的方式自行排序。阅读界面:
https://msdn.microsoft.com/en-us/library/4d7sx9hd(v=vs.110).aspx
如果你有固定数量的类型,那么你可以使用一个快速帮助方法为每个对象返回一个整数,具体取决于它的类型,并比较每个对象的返回整数,以确定哪一个“首先出现。” / p>
答案 2 :(得分:0)
实施IComparer
或IComparable
界面。使用IComparable
的缺点是,这必须由针对排序的类实现,这意味着如果您想在代码中的其他位置以不同的方式对其进行排序,您将无法使用这种机制这样做。另一方面,如果您选择,IComparer
可以与目标类分离并以多种方式实现,并且根据应用程序不同部分的排序条件,您可以应用其中一个IComparer
根据需要分类。