2012-04-24 58 views
0

所以,最近我一直在用這個方法返回一個字符串:GET byte []並返回使用元素值?

string uri = "http://localhost:8000/Service/Student"; 
XDocument xDoc = XDocument.Load(uri); 
var studentcollection = xDoc.Descendants("Student") 
    .Select(n => new 
    { 
     FirstName = n.Element("FirstName").Value, 
    }) 
    .ToList(); 

,它工作正常,但如果從Web服務中的一個值是一個byte []將這個方法返回一個值?如果不是,你將如何結合該方法(因爲我用它)並返回一個字節[]?

+0

林試圖說'.Value.ToArray'?這可能是錯誤的 – 2012-04-24 07:00:13

+2

[Extract a Byte \ [\]從Linq到Xml的XElement的可能的重複](http://stackoverflow.com/questions/319407/extract-a-byte-from-an-xelement-with -linq-to-xml) – 2012-04-24 07:03:19

+0

它「可能」可能是一個重複的即時消息不完全確定,從我的web服務我已經轉換爲base64,但我真的不想轉換字節[],我想回到未轉換。 – 2012-04-24 07:52:20

回答

1

你是說一個元素可能會返回一個byte[]還是真的是一個64位編碼的字符串代表一個byte[]?如果是後者,你可以從值提取字節:

byte[] decoded = Convert.FromBase64String(value); 

全碼:

string uri = "http://localhost:8000/Service/Student"; 
XDocument xDoc = XDocument.Load(uri); 
var studentcollection = xDoc.Descendants("Student") 
    .Select(Convert.FromBase64String(n.Element("Picture").Value)) 
    .ToList(); 

,這將給你的提煉出來的「圖片」元素爲每個學生byte[]列表(相應地更改代碼以創建圖片作爲學生實例的一部分)。