如何做林克反对
本文关键字:林克 何做 | 更新日期: 2024-11-08 15:56:30
我有一个对象列表如下
List<object> creditOptions = new List<object>();
creditOptions = (List<object>)pGateways;
在creditOptions中填写的数据来自json格式的服务器,并且一直在变化。它有一些数据如下
{
"options": [
{
"id": "QP",
"order-index": "1",
"name": "Quick Pay",
"urls": [
{
"Key": "sample",
"Value": "sample"
},
{
"Key": "sample",
"Value": "sample"
},
{
"Key": "sample",
"Value": "sample"
}
],
"is_active": 1
},
{
"id": "CC",
"order-index": "0",
"name": "sample",
"card-type": [
{
"name": "sample",
"item-code": "sample",
"bank_id": "sample"
},
{
"name": "sample",
"item-code": "sample",
"bank_id": "sample"
}
],
"makePaymentCreditUrl": "sample",
"is_active": 1
}
]
}
现在我想做的是我想在 creditOptions 列表上触发一个 linq 查询,以根据"id"取出数据。是否可以在列表上使用 linq。
我正在使用以下代码行来反序列化 json 对象
Dictionary<string, object> pGateways = (Dictionary<string,object>)Json.JsonParser.FromJson(response);
JsonParser 的元数据是
public class JsonParser
{
public JsonParser();
public static T Deserialize<T>(string json);
public static object Deserialize(string json, Type type);
public static IDictionary<string, object> FromJson(string json);
public static IDictionary<string, object> FromJson(string json, out JsonToken type);
public static string Serialize<T>(T instance);
public static string ToJson(IDictionary<string, object> bag);
}
这是一个Windows Phone 8项目。
Linq可以处理任何实现IEnumerable的东西,所以这应该不是问题。
但是,在 linq 查询中,您需要在对象上指定一个属性,该属性是类定义的一部分,而您的 id 不是对象的一部分。因此,您需要具有具有这些属性的类型。
您需要将 json 字符串解析为至少具有名为 Id 的属性的内容。从给定的示例中,所有 json 对象都有 id、order-index 和 name。您可以尝试使用这些属性创建接口,而不是使用对象,您可以在解析时使用该接口。像Dictionary<string, YourInterface> pGateways ...
然后,可以使用 linq 查询中的属性,例如 var result = (from x in pGateways where x.id == "myid" select x);
或类似属性。