[英]query xml string using LINQ
我有一張這樣的桌子
Table (Id decimal,XMLContent XML)
現在我想查詢具有特定類型的記錄這是我的代碼
public ActionResult Index(int? id,FormCollection frm)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
ViewBag.FormId = id;
ViewBag.FormName = db.Forms.Find(id).Name ;
var xMLDatas = db.XMLDatas.Include(x => x.Form).Where(x=>x.FormId==id).AsQueryable();
foreach (string item in frm)
{
if (item.StartsWith("xml-") && !string.IsNullOrEmpty( Request.Form[item]))
{
string i = item.Replace("xml-", "");
string value = Request.Form[item];
xMLDatas = xMLDatas.Where(x => x.XMLContent.Contains("<" + i + "[^>]*>"+value+"</" + i + ">")).AsQueryable();
}
}
return View(xMLDatas.ToList());
}
但我在返回時收到此錯誤消息
不允許從數據類型 xml 到數據類型 nvarchar、表 'dbo.XMLDatas'、列 'XMLContent' 的隱式轉換。 使用 CONVERT function 運行此查詢。
您不能在 XMLContent 上調用Contains("<" + i + "[^>]*>"+value+"</" + i + ">"))
,因為該列的XMLContent
類型是XML
而不是NVARCHAR
。
基本上,您可以對字符串或 SQL 服務器隱式轉換為字符串的內容調用Contains
。
但是您可以嘗試在服務器端解決它。 嘗試首先從數據庫加載 XML :
var xMLDatas = db.XMLDatas.Include(x => x.Form).Where(x=>x.FormId==id).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.