Enumerable + WhereSelectEnumerableIterator`2错误并使用LINQ语句获取JObject

时间:2017-07-21 15:33:54

标签: c# linq json.net

{"type" : "Something", 
 "values" : [ 
 { "type": "Something else", 
   "Categories": { 
       "values": [ "Grocery" ]},
   "Origin": {
       "values": [
          {
             "Name": "Chicken",
             "State": "Texas",
             "Quantity": "200",
             "Year" : "2017" }],
  "Primaryprovider": "Farmer",
  "Name": "EggsGrocery"
}, 
{ 
  "type": "Something else",
  "categories": { 
      "values": [ "Utensil" ]},
  "Origin": {
       "values": [
          {
             "Name": "Cutlery",
             "State": "Alaska",
             "Quantity": "109",
             "Year" : "2015" }],
  "Primaryprovider": "Welder",
  "Name": "UtensilSpoon"
}]}

我有一个与名称相匹配的字典。所以我尝试获得Primaryproviders,我得到了这个;

System.Linq.Enumerable+WhereSelectEnumerableIterator`2[Newtonsoft.Json.Linq.JToken,Newtonsoft.Json.Linq.JToken]

请帮我指出我做错了什么。如果状态是具有LINQ表达式的Texas,我如何获得Name,State和Year的Origin值?我对LINQ不太熟练,所以我真的很感激那里的简短解释。我开始使用JToken,我看到这是一个坏主意。 请帮忙。非常感谢!

 foreach (var kvp in catDict)
        {
            string cat = kvp.Key;
            List<string> Names = new List<string>();
            Names.AddRange(kvp.Value);
            for (int i = 0; i < Names.Count; i++)
            {
                 //if the name contains the name of the category
                if (Names[i].Contains(cat))
                {
                    //get primaryprovider
                    string primaryprover = json["values"].Select(pk => pk.SelectToken("Primaryprovider")).ToString();

             // get the Origin Name, State & year if the state is Texas
             // foreach (var jent in json["values"])
                //{  
                    //if (jentity["Origin"]["State"] == "Texas")
                //}

                    Console.WriteLine(primaryprovider);
                }

1 个答案:

答案 0 :(得分:1)

免责声明:由于并未提供所有代码,因此我必须对对象做出一些假设。例如,catDict的通用参数是什么?

突出的一点是import org.apache.spark.ml.PipelineModel val model = PipelineModel.load("/analytics_shared/qoe/km_model") 不使用任何循环变量,这意味着它总是会返回相同的值。

但我的建议是支持并采取不同的方法。 Deserialize your json into a list of objects(您需要先创建数据合同)。完成后,您所讨论的操作方法非常简单。以下是一些例子。

string primaryProvider