2010-02-04 53 views

回答

5

您可以编写自己的IComparer,并在Sort方法中使用该实现。

然后,您的实施可以确定malcolm和sandra总是比其他任何标签都小。

public class MySorter : IComparer<ISilverNodeModelClass> 
{ 
    public int Compare(ISilverNodeModelClass left, ISilverNodeModelClass right) 
    { 
     if(left.Label.Equals (right.Label)) 
      return 0; 

     if(left.Label == "malcolm" || left.Label == "sandra") 
      return Int32.MinValue; 

     if(right.Label == "malcolm" || right.Label == "sandra") 
      return Int32.MaxValue; 

     return Comparer<string>.Default.Compare (left.Label, right.Label); 
    } 
} 
+0

好的问题解决: 继üR代码里面。谢谢 – Malcolm 2010-02-04 11:25:23

1

如果你在.NET 3.5中,有一个很好的方式,使用LINQ做到这一点:

List<string> topLabels = new List<string> { "Malcolm", "Sandrea" }; 
    nodes = nodes 
     .OrderByDescending(node => topLabels.Contains(node.Label)) 
     .ThenBy(node => node.Label) 
     .ToList(); 
0
    nodes.Sort((node1, node2) => 
         { 
          if (node1.Label.Equals(node2.Label)) 
          { 
           return 0; 
          } 
          if (node1.Label == "Favorites" || node1.Label == "Recent") 
           { 
            return Int32.MinValue; 
           } 
          if (node2.Label == "Favorites" || node2.Label == "Recent") 
          { 
           return Int32.MaxValue; 
          } 
          return node1.Label.CompareTo(node2.Label); 
         }); 
相关问题