Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 按值C排序字典#_C#_Json_Linq_Dictionary - Fatal编程技术网

C# 按值C排序字典#

C# 按值C排序字典#,c#,json,linq,dictionary,C#,Json,Linq,Dictionary,我正在将JSON字符串反序列化到C#中的字典中,但是我想按值对字典进行排序,以便在高分表中显示它。现在,字典按固定顺序返回 var temp = Json.Deserialize(www.text) as Dictionary<string,object>; if (temp != null) { data = (List<object>)temp["_items"];

我正在将JSON字符串反序列化到C#中的字典中,但是我想按值对字典进行排序,以便在高分表中显示它。现在,字典按固定顺序返回

  var temp = Json.Deserialize(www.text) as Dictionary<string,object>;
            if (temp != null)
            {
                data = (List<object>)temp["_items"];
            }
单元创建

var dict = (Dictionary<string, object>) data[row];


            // Set Name
            cell.nameText.text = dict["Name"].ToString();

            // Set score
            cell.score.text = string.Format("{0:n0}", dict["HighScore"]);

            // Fb Profile IMG
            StartCoroutine(getFBPicture(cell.image, dict["FacebookId"].ToString()));
var dict=(字典)数据[行];
//设置名称
cell.nameText.text=dict[“Name”].ToString();
//得分
cell.score.text=string.Format(“{0:n0}”,dict[“HighScore]”);
//Fb剖面图
start例程(getFBPicture(cell.image,dict[“facebook id”].ToString());
试试这个

public class obj 
                {
                public DateTime updated {get;set;}
                public string id {get;set;}
                public string Name {get;set;}
                 public self links {get;set;}
                public string FacebookId {get;set;}
                public int highscore {get;set;}

                }

    public class self {
    public string href {get;set;}
    public string title {get;set;}
                   }

                var dic = new Dictionary<TKey, obj>();
                var sorted = dic.OrderBy(x=>x.Value.highscore).ToList();
公共类obj
{
公共日期时间已更新{get;set;}
公共字符串id{get;set;}
公共字符串名称{get;set;}
公共自链接{get;set;}
公共字符串FacebookId{get;set;}
公共整数高分{get;set;}
}
公共阶级自我{
公共字符串href{get;set;}
公共字符串标题{get;set;}
}
var dic=新字典();
var sorted=dic.OrderBy(x=>x.Value.highscore).ToList();

使用字典时,无法对字典本身进行排序,因为字典的目的是使用哈希值访问字典。 但是,您可以通过执行以下操作返回排序值列表:

dictionary.Values.OrderyBy(x => (DateTime)x._updated);
这是假设您正在使用类似Newtonsoft.Json的东西,它返回一个具有可访问属性的对象


请考虑使用一个基本类型的对象或一个实现ICMePARABLE的类型来定义排序顺序。

我推荐使用LINQ:JSON中的HealSCORE变量的“石田”的可能副本“现在字典以固定的顺序返回”——嗯,不是按照一个明确定义的、文档化的顺序。你应该把
字典
看作是一个无序的集合。例如,您现在看到的任何特定顺序都不能保证是您在其他版本中看到的顺序。(添加或删除项目可能会改变整个顺序。)在我看来,与其使用
字典,不如创建一个类型(例如
Player
),将每个值反序列化为。。。
dictionary.Values.OrderyBy(x => (DateTime)x._updated);