使用linq从数据库列中的json对象中提取值

时间:2017-04-26 15:13:19

标签: json linq asp.net-mvc-5

假设我的数据库表Employees中有两列如下:

EmpId                     ImageData
-----   --------------------------------------------
  1     {"path":"~/Content/Image.png","type":".pdf"}

现在,如何在我的linq where()子句中放置一个条件来检查path的{​​{1}}是否等于ImageData

我想做这样的事情:

~/Content/Image.png

有可能吗?或者,实现这一目标的正确方法是什么?谢谢:))

更新

根据Steve Ford的建议,我有以下例外:

  

LINQ to Entities无法识别方法'Newtonsoft.Json.Linq.JToken get_Item(System.String)'方法,并且此方法无法转换为商店表达式。

1 个答案:

答案 0 :(得分:0)

尝试将您从JToken收到的JObject.Parse转换为字符串:

var data = db.Employees
           .Where(x => (string)JObject.Parse(x.ImageData)["path"] == "~/Content/Image.png")
          .ToList();