簡體   English   中英

使用 LINQ 查詢 xml 字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM