2

私は linq に関しては初心者で、json.net を使用して json フィードを解析するサイトに取り組んでいます。私が抱えている問題は、json フィードから複数のフィールドを取得し、それらを foreach ブロックに使用できるようにする必要があることです。json.net のドキュメントでは、1 つのフィールドのみを取得する方法のみが示されています。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 に答える