Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.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# 无法隐式转换类型';newtonsoft.json.linq.jtoken';到newt';newtonsoft.json.linq.jvalue';_C#_Visual Studio_Asp.net Web Api - Fatal编程技术网

C# 无法隐式转换类型';newtonsoft.json.linq.jtoken';到newt';newtonsoft.json.linq.jvalue';

C# 无法隐式转换类型';newtonsoft.json.linq.jtoken';到newt';newtonsoft.json.linq.jvalue';,c#,visual-studio,asp.net-web-api,C#,Visual Studio,Asp.net Web Api,我正在使用VisualStudio开发一个web api,我的post api应该从主体读取值并从数据库返回一个数组,但是我在标题中列出了错误 这是我的密码: [HttpPost] public IHttpActionResult getsub([FromBody] JObject data) { using (GaminBrainEntities entities = new GaminBrainEntities()) {

我正在使用VisualStudio开发一个web api,我的post api应该从主体读取值并从数据库返回一个数组,但是我在标题中列出了错误

这是我的密码:

  [HttpPost]
    public IHttpActionResult getsub([FromBody] JObject data)
    {

        using (GaminBrainEntities entities = new GaminBrainEntities())
        {
            JValue id = data.SelectToken("pk");
            return Ok(entities.SP_Brands_Get_By_Category(id).ToArray);
        }
    }

如何更改代码以修复错误?

SelectToken方法的返回类型为JToken,并且它不会隐式地从JToken转换为JValue,因此编译器会抛出此错误,因此将id的类型更改为JToken,编译器会很高兴

JToken id = data.SelectToken("");
由于ToArray是方法,返回语句也会抛出错误,因此必须用括号写入ToArray()。这将解决另一个错误。如果id是整数值,则首先将其转换为整数,然后将其传递给存储过程

int idValue= id.ToObject<int>();

return Ok(entities.SP_Brands_Get_By_Category(idValue).ToArray());
int-idValue=id.ToObject();
返回Ok(entities.SP_Brands_Get_By_Category(idValue.ToArray());

我这样做了,但随后我得到了另一个编译器错误,返回Ok(entities.SP\u Brands\u Get\u By\u Category(id).ToArray);无法将newtonsoft.json.linq.jtoken转换为long,因为存储过程中的“id”是id中的值?如果它可以转换为long,那么您必须首先显式地将其转换为long,然后将其传递到存储过程i已编辑我的答案,请检查并尝试此操作,它将解决您的错误。使用try-catch处理异常我在vb中使用了相同的代码,对我来说效果很好,我不知道为什么会在c中发生这种情况#