C# 带linq的C排序字典

C# 带linq的C排序字典,c#,linq,C#,Linq,我有一本C语言的词典: public Dictionary<Product, int> 我想把我的结果放到一个通用列表中: List<Product> productList = new List<Product>(); 产品订购者按字典中的int值降序。我尝试过使用orderby方法,但没有成功。您可以使用以下方法: List<Product> productList = dictionary.OrderByDescending(kp =&g

我有一本C语言的词典:

public Dictionary<Product, int>
我想把我的结果放到一个通用列表中:

List<Product> productList = new List<Product>();
产品订购者按字典中的int值降序。我尝试过使用orderby方法,但没有成功。

您可以使用以下方法:

List<Product> productList = dictionary.OrderByDescending(kp => kp.Value)
                                      .Select(kp => kp.Key)
                                      .ToList();
试试这个

List<Product> productList = dictionary.OrderByDescending(x => x.Value).Select(x => x.Key).ToList();

下面是一个使用LINQ查询语法的示例

 public class TestDictionary 
    {
        public void Test()
        {
            Dictionary<Product, int> dict=new Dictionary<Product, int>();
            dict.Add(new Product(){Data = 1}, 1);
            dict.Add(new Product() { Data = 2 }, 2);
            dict.Add(new Product() { Data = 3 }, 3);
            dict.Add(new Product() { Data = 4 }, 9);
            dict.Add(new Product() { Data = 5 }, 5);
            dict.Add(new Product() { Data = 6 }, 6);

            var query=(from c in dict 
                orderby c.Value descending 
                select c.Key).ToList();       
        }
        [DebuggerDisplay("{Data}")]
        public class Product
        {
            public int Data { get; set; }
        }           
    }

当您说“未成功”时,您是否遇到运行时异常?或者是结果没有按照您预期的方式排序?如果提供的答案已经与您所做的匹配,您当前正在尝试什么排序代码。我在值上使用orderby,但不知道我可以使用select获取键值。所以问题解决了:也许你应该考虑使用排序字典,谢谢大家。后续问题:我是否使用Take方法获得x个结果?如果我想要一个限制,是的,你可以使用.Takex得到x个结果。如果您试图进行分页,请跳过。记住这些运算符的顺序很重要。是的,您可以使用Takeint n来限制select@Johan. 是,Take6将返回前六个结果。也可以使用Skip。例如,Skip6.Take4将跳过前6个结果并返回下一个4.pure Linq是一个非常有争议的语句,因为您的查询将编译到上面的方法链。更纯粹的是编写带有委托的IEnumerable方法链。
 public class TestDictionary 
    {
        public void Test()
        {
            Dictionary<Product, int> dict=new Dictionary<Product, int>();
            dict.Add(new Product(){Data = 1}, 1);
            dict.Add(new Product() { Data = 2 }, 2);
            dict.Add(new Product() { Data = 3 }, 3);
            dict.Add(new Product() { Data = 4 }, 9);
            dict.Add(new Product() { Data = 5 }, 5);
            dict.Add(new Product() { Data = 6 }, 6);

            var query=(from c in dict 
                orderby c.Value descending 
                select c.Key).ToList();       
        }
        [DebuggerDisplay("{Data}")]
        public class Product
        {
            public int Data { get; set; }
        }           
    }