[英]Get Xml field from database, then get value from a particular element
我想將我從數據庫中檢索的xml文檔中的特定元素的值(如果且僅當xml文檔具有)存儲到一個整數列表中。
我已經開始嘗試這樣做(messages.MessageXML是SQL Server數據庫中的Xml類型):
List<int> messageXml = (from messages in dbContext.Messages
join transactions in dbContext.Transactions
on messages.TransactionID equals transactions.TransactionID
where transactions.CreatedOn >= StartDate
&& transactions.CreatedOn <= EndDate
select messages.MessageXML
).ToList();
我想在一個LINQ查詢中做到這一點,還是需要將messages.MessageXML放入XmlDocuments / Strings列表中,然后嘗試以這種方式查詢它? 我可以做到,但我寧願只在一個查詢中完成所有操作。
我嘗試根據其他已看到的其他問題來執行此操作:
select messages.MessageXML.Element("IDThatIWant")
但是我不斷收到錯誤消息,指出“字符串”不包含Element的定義。 如果它是我缺少的名稱空間,則不確定是哪個名稱空間。
任何幫助表示贊賞!
您可以在select子句中動態創建和取消引用XML-Linq,如下所示:
select XElement.Parse(messages.MessageXML).Element("IDThatIWant")
但是,要分離SQL和XML並包括限制(僅當元素具有屬性時),將類似於:
var messageXml = from messages in dbContext.Messages
join transactions in dbContext.Transactions
on messages.TransactionID equals transactions.TransactionID
where transactions.CreatedOn >= StartDate
&& transactions.CreatedOn <= EndDate
select messages.MessageXML;
var messages = from m in messageXml select XElement.Parse(m);
var ids = (from msg in messages
let id = msg.Attribute("IDThatIWant")
where !String.IsNullOrEmpty(id)
select Convert.ToInt32(id)).ToList<int>();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.