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回调,这样它总是把第一个键作为更高的顺序进行比较