Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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
Asp.net JSON.net linq无法使用where语句选择节点_Asp.net_Json_Linq_Json.net - Fatal编程技术网

Asp.net JSON.net linq无法使用where语句选择节点

Asp.net JSON.net linq无法使用where语句选择节点,asp.net,json,linq,json.net,Asp.net,Json,Linq,Json.net,我正在尝试选择empUID等于某个ID的节点 { "dsShedule": { "ttEmployee": [ { "empUID": 2649, "empNameFirst": "Firstname", "empNameLast": "lastName", "empFunction": "AFWERKER DRUKKER

我正在尝试选择empUID等于某个ID的节点

{
    "dsShedule": {
        "ttEmployee": [
            {
                "empUID": 2649,
                "empNameFirst": "Firstname",
                "empNameLast": "lastName",
                "empFunction": "AFWERKER DRUKKERIJ",
                "ttShedule": [
                    {
                        "UID": 47,
                        "empUID": 2649,
                        "datStart": "2013-05-20",
                        "datStop": "2013-05-20",
                        "regime": 1,
                        "state": "PLANNED",
                        "ttSheduleDay": [
                            {
                                "SheduleUID": 47,
                                "dat": "2013-05-20",
                                "dateTimeStart": "2013-05-20T08:00:00.000",
                                "dateTimeStop": "2013-05-20T17:00:00.000",
                                "duration": 8
                            }
                        ]
                    },
                    {
                        "UID": 57,
                        "empUID": 2649,
                        "datStart": "2013-05-21",
                        "datStop": "2013-05-21",
                        "regime": 1,
                        "state": "PLANNED",
                        "ttSheduleDay": [
                            {
                                "SheduleUID": 57,
                                "dat": "2013-05-21",
                                "dateTimeStart": "2013-05-21T08:00:00.000",
                                "dateTimeStop": "2013-05-21T17:00:00.000",
                                "duration": 8
                            }
                        ]
                    }
                ]
            },
我可以选择所有employee节点,但当我尝试选择ID等于(例如494323)的节点时,找不到它

功能 我正在使用VS2012,当我调试元素linq并查找empUID的值时,它会显示值{494323}(为什么是括号?)

下面是变量的图片:

你可以看到uid是空的,我缺少什么


提前感谢

您选择的不是select查询中的值,而是JToken对象:

empUID = x.SelectToken("empUID")
empUID的类型为JToken(您可以在debug视图中看到该类型)。 然后尝试将一个整数与一个将失败的JToken进行比较

只需选择如下值:

empUID = x.SelectToken("empUID").Value<int>()

谢谢,这正是我需要的,不客气。请随意接受和/或投票支持我的答案。变量UID现在是employee。现在我想从变量UID中选择ttschedule下的“datStart”。如何选择此选项?此时它就像一个IEnumerablelist,不知道如何处理它。
ttschedule
是一个数组。您想获取所有的
datStart
值还是第一个、最后一个,…我要完成的是选择TTScheduleDay dateTimeStart。但这里empUID等于'a ID',ttscheduleday>dat等于日期。然后我得到了第三个参数Start/Stop或duration,这将决定我将选择哪个节点。我该怎么做?Thx 4应答
empUID = x.SelectToken("empUID").Value<int>()
var uid = linq.Where(x => x.empUID.Value<int>() == firstUID);
var linq = jObj["dsShedule"]["ttEmployee"]
         // first filter for a single emp by empUID
         .First(emp => emp["empUID"].Value<int>() == firstUID)
         // then select the ttShedule array of that emp
         .Select(emp => emp["ttShedule"])
         // now filter for whatever ttShedule you need
         .Where(shed => shed["ttSheduleDay"]
                      .Any(day => day["dat"].Value<DateTime>() 
                                             == new DateTime(2013, 5, 24))