在 C# 中过滤对象值

Filtering Object values in C#

我有一个 C# web Api 接收以下对象:

     "cars": {
       "bmw": true,
       "benz": false,
       "kia": true,
       "hyundai": false,
       "madza": false,
       "ford": false
   }

class属性如下:

 public CarsViewModel cars{ get; set; }

如何获取上述对象中所有为真的值?

您可以将接收到的对象解析到字典中,并且 select 仅当值为 true 时才是键。

string json = "{\"bmw\": true,\"benz\": false,\"kia\": true,\"hyundai\": false,\"madza\": false,\"ford\": false}";
var dict = JsonConvert.DeserializeObject<Dictionary<string,bool>>(json);

List<string> cars = dict.Where(x=>x.Value).Select(y=>y.Key).ToList();

您可以通过以下方式查看结果:

cars.ForEach(y => Console.Write("{0}\n", y));

PS。对于序列化,您必须使用 Newtonsoft.Json 命名空间。

你试试这个代码

 string jsonstring = "{\"cars\": {\"bmw\": \"true\", \"benz\": \"false\",  \"kia\": \"true\",  \"hyundai\": \"false\", \"madza\": \"false\",  \"ford\": \"false\"}}";
 dynamic data = JObject.Parse(jsonstring); 
 CarsViewModel obj = new CarsViewModel(); 
 var mydetails2 = JsonConvert.SerializeObject(data.cars);
 var mydetails3 = JsonConvert.DeserializeObject<Dictionary<string, bool>>(mydetails2);

  foreach (var pair in mydetails3)
    {
       // Console.WriteLine("{0}, {1}", pair.Key, pair.Value);
        if (pair.Value == true)
        {
            if (pair.Key == "bmw")
            {
                obj.bmw = pair.Value;
            }
            else if (pair.Key == "benz")
            {
                obj.benz = pair.Value;
            }
            else if (pair.Key == "kia")
            {
                obj.kia = pair.Value;
            }
            else if (pair.Key == "hyundai")
            {
                obj.hyundai = pair.Value;
            }
            else if (pair.Key == "madza")
            {
                obj.madza = pair.Value;
            }
            else if (pair.Key == "ford")
            {
                obj.ford = pair.Value;
            }

        }
    }

希望对你有所帮助..