对于 linq,我是个新手,我正在开发一个使用 json.net 解析 json feed 的网站。我遇到的问题是我需要能够从 json feed 中提取多个字段并将它们用于 foreach block 。 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 feed 中提取多个字段并将它们用作 foreach block (或类似的东西)的一部分?
最佳答案
您不能像这样(如下所示)直接在 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);
}
关于JSON.Net 和 Linq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12886421/