如何做林克反对

本文关键字:林克 何做 | 更新日期: 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); 或类似属性。