2012-10-14 27 views
2

當談到linq時,我有點新手,我正在使用json.net解析json feed的網站上工作。我遇到的問題是我需要能夠從json feed中獲取多個字段並將它們用於foreach塊。 json.net的文檔只顯示如何只拉一個字段。檢查完linq文檔後,我做了一些修改,但是我沒有找到任何效果最好的東西。這裏就是我這麼遠?JSON.Net和Linq

WebResponse objResponse; 
    WebRequest objRequest = HttpWebRequest.Create(url); 
    objResponse = objRequest.GetResponse(); 
    using (StreamReader reader = new StreamReader(objResponse.GetResponseStream())) 
    { 
     string json = reader.ReadToEnd(); 
     JObject rss = JObject.Parse(json); 

     var postTitles = 
      from p in rss["feedArray"].Children() 
      select (string)p["item"], 
      //These are the fields I need to also query 
      //(string)p["title"], (string)p["message"]; 

     //I've also tried this with console.write and labeling the field indicies for each pulled field 
     foreach (var item in postTitles) 
     { 
      lbl_slides.Text += "<div class='slide'><div class='slide_inner'><div class='slide_box'><div class='slide_content'></div><!-- slide content --></div><!-- slide box --></div><div class='rotator_photo'><img src='" + item + "' alt='' /></div><!-- rotator photo --></div><!-- slide -->"; 
     } 
    } 

有沒有人見過如何從JSON提要拉多個領域,並把它們作爲一個foreach塊的一部分(或類似的東西

回答

2

你能不能直接在你的foreach循環中直接引用這些字段,就像這樣(下面)?我不確定你是否真的需要linq查詢(注意,爲了清晰起見,我已經刪除了大部分的html代碼。調整您的實際項目,做適當的HTML轉義等)

foreach (var p in rss["feedArray"].Children()) 
{ 
    lbl_slides.Text += string.Format(
     "<img src='{0}' title='{1}'/><span>{2}</span>", 
     (string)p["item"], 
     (string)p["title"], 
     (string)p["message"]); 
} 

相同的th使用linq會看起來像這樣:

var postTitles = 
    from p in rss["feedArray"].Children() 
    select new 
    { 
     Src = (string)p["item"], 
     Title = (string)p["title"], 
     Message = (string)p["message"], 
    } 

foreach (var item in postTitles) 
{ 
    lbl_slides.Text += string.Format(
     "<img src='{0}' title='{1}'/><span>{2}</span>", 
     item.Src, item.Title, item.Message); 
} 
+0

謝謝,這樣做! – johngeek