LINQ需要从列中解析JSON

时间:2016-11-26 14:39:53

标签: c# json linq

在Leads表中,有一个包含JSON字符串的列Data。在LINQ语句中,我需要从该JSON中提取字段:

var results = from l in leads
    select new MyLeadObject
    {
        LeadID = l.LeadID,
        ...
        RequestType = (string)l.Data["RequestTypeID"]
    };

这是JSON的缩短版本:

{  
   "RequestTypeID":1
}

RequestTypeID是一个字符串。

我一直在阅读其他主题并尝试将其拼凑在一起。没有太多运气。

修改

在Nkosi的帮助下,我做到了这一点:

RequestType = (string)JSONNetSerialization.DeserializeJsonNet<LeadData>(l.Data).RequestTypeID

唯一的问题是LeadData.RequestTypeID是一个枚举,因此它不会将枚举转换为字符串。我不确定如何获取枚举的值而不是整个枚举本身。在LINQ之外我可以这样做:RequestTypeID.GetDisplayName();但LINQ无法识别.GetDisplayName()

1 个答案:

答案 0 :(得分:1)

您可以使用Json.Net来解析Data字段中的JSON以获取该属性。

var results = leads.Select(l =>
    new MyLeadObject {
        LeadID = l.LeadID,
        //...
        RequestType = (string)JsonConvert.DeserializeObject(l.Data)["RequestTypeID"]
    });