2

在 linq 方面,我有点新手,我正在开发一个使用 json.net 解析 json 提要的网站。我遇到的问题是我需要能够从 json 提要中提取多个字段并将它们用于 foreach 块。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 块的一部分(或类似的东西?

4

1 回答 1

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"]);
}

同样的事情使用 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);
}
于 2012-10-14T21:29:02.067 回答