C#对字典列表进行排序,第一对除外

C#对字典列表进行排序,第一对除外,c#,C#,我正试着在字典上分类 class Program { static void Main() { // Example dictionary. var dictionary = new Dictionary<string, int>(5); dictionary.Add("cat", 3); dictionary.Add("dog", 1); dictionary.Add("mouse",

我正试着在字典上分类

class Program {
    static void Main()
    {
        // Example dictionary.
        var dictionary = new Dictionary<string, int>(5);
        dictionary.Add("cat", 3);
        dictionary.Add("dog", 1);
        dictionary.Add("mouse", 0);
        dictionary.Add("elephant", 2);
        dictionary.Add("bird", 4);

        var items = from pair in dictionary
                orderby pair.Value ascending
                select pair;

        // Display results.
        foreach (KeyValuePair<string, int> pair in items)
        {
            Console.WriteLine("{0}: {1}", pair.Key, pair.Value);
        }
        items = from pair in dictionary
        orderby pair.Value descending
        select pair;
    } }
但是我需要排除第一对来对其余的进行排序,并得到这个结果

cat
mouse
dog
elephant
bird   
我能在这里做点什么吗

var items = from pair in dictionary
                orderby pair.Value ascending
                select pair;

试试这样的

var result = YourList.OrderBy(mc => mc.SomePropToSortOn)
                   .ToDictionary(mc => mc.Key.ToString(), 
                                 mc => mc.Value.ToString(), 
                                 StringComparer.OrdinalIgnoreCase);

试试这样的

var result = YourList.OrderBy(mc => mc.SomePropToSortOn)
                   .ToDictionary(mc => mc.Key.ToString(), 
                                 mc => mc.Value.ToString(), 
                                 StringComparer.OrdinalIgnoreCase);

您可以使用LINQ
.OrderBy

dictionary.OrderBy(t => t.Value).ToDictionary(t => t.Key, t=> t.Value);

您可以使用LINQ
.OrderBy

dictionary.OrderBy(t => t.Value).ToDictionary(t => t.Key, t=> t.Value);
请注意,
字典
不保证订单

根据它的实施,订单在项目移除后会被打乱一次

排除第一对

我建议不要按订单记下你们的商品

请注意,
字典
不保证订单

根据它的实施,订单在项目移除后会被打乱一次

排除第一对

我建议不要按订单记录您的商品。

dictionary.Take(1).Concat(dictionary.Skip(1).OrderBy({logic}))

你明白我的想法了吧

dictionary.Take(1).Concat(dictionary.Skip(1).OrderBy({logic}))

你明白我的想法了吧,我建议你使用Linq

输出

   cat   ,
   mouse   ,
   dog   ,
   elephant   ,
   bird
检查此项

我建议使用Linq

输出

   cat   ,
   mouse   ,
   dog   ,
   elephant   ,
   bird

选中此项

您可以尝试使用此代码:

var first=dictionary.Take(1);
var orderedRest=dictionary.Skip(1).OrderBy(p=>p.Value);
var items=first.Union(orderedRest);

我已经提到了,我认为字典不是适合这个的集合类型。我认为你应该使用
列表
。上述代码也适用于列表。

您可以尝试使用以下代码:

var first=dictionary.Take(1);
var orderedRest=dictionary.Skip(1).OrderBy(p=>p.Value);
var items=first.Union(orderedRest);

我已经提到了,我认为字典不是适合这个的集合类型。我认为你应该使用
列表
。上述代码也适用于列表。

您确定字典是此处使用的正确集合类型吗?您对字典的问题没有意义,因为它没有内在顺序,因此没有“第一对”。我也认为你的情况不适合用在字典上。有分类字典(以及分类列表和分类集)。如果你能检测出你想要成为的第一对,你可以编写你自己的orderby回调,这样它总是将第一个键作为更高的顺序进行比较。你确定字典是这里使用的正确集合类型吗?你的字典问题没有意义,因为它没有内在顺序,因此没有“第一对”。我也认为你的情况不适合用在字典上。有分类字典(以及分类列表和分类集)。若你们能检测到你们想要成为的第一对,你们可以编写你们自己的orderby回调,这样它总是把第一个键作为更高的顺序进行比较