Ответ 1
Вы можете сделать это, используя:
List<Product> productList = dictionary.OrderByDescending(kp => kp.Value)
.Select(kp => kp.Key)
.ToList();
У меня есть словарь в С#:
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();
MyDict.OrderByDescending(x => x.Value).Select(p => p.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; }
}
}
products = products
.OrderByDescending(kvp => kvp.Value)
.ThenBy(kvp => kvp.Key)
.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);