如何在foreach循环上设置任意限制?

时间:2012-01-05 19:22:28

标签: asp.net

我有一个foreach循环取出所有内容,但我希望它在10之后停止。看来我应该使用for代替。但我不明白如何在分配所需的var。

的同时写出来
    @foreach (var p in posts)
{ 
        <item>
                <title>@p.GetProperty("zContentTitle").Value</title>
                <dc:creator>@p.GetProperty("zPostAuthor").Value</dc:creator>
                <category>@p.GetProperty("zPostCategories")</category>
                <description>@p.GetProperty("zContentBody").Value.StripHtml().Trim()</description>
                <link>http://@Request.Url.Host@landing.Url@p.Url</link>
                <guid isPermaLink="false">http://@Request.Url.Host@landing.Url@p.Url</guid>
                <pubDate>@p.GetProperty("zPostDate").Value.FormatDateTime("ddd, dd MMM yyyy HH:mm:ss") CST</pubDate>
        </item>
}

2 个答案:

答案 0 :(得分:2)

鉴于少量代码很难说,你应该使用哪些选项。

中似乎是“帖子”
@foreach (var p in posts)
{
  ...
} 

的类型为IEnumerable。所以你可以使用扩展方法Take()。你的代码看起来像这样:

@foreach (var p in posts.Take(10))
{ 
    <item>
            <title>@p.GetProperty("zContentTitle").Value</title>
            <dc:creator>@p.GetProperty("zPostAuthor").Value</dc:creator>
            <category>@p.GetProperty("zPostCategories")</category>
            <description>@p.GetProperty("zContentBody").Value.StripHtml().Trim()</description>
            <link>http://@Request.Url.Host@landing.Url@p.Url</link>
            <guid isPermaLink="false">http://@Request.Url.Host@landing.Url@p.Url</guid>
            <pubDate>@p.GetProperty("zPostDate").Value.FormatDateTime("ddd, dd MMM yyyy HH:mm:ss") CST</pubDate>
    </item>
}

答案 1 :(得分:0)

如果posts实现IEnumerable界面,如果您使用System.Linq,则可以执行此操作。

@foreach (var p in posts.Take(10))

否则你可以做点像......

@{ var counter = 0; }

@foreach(var p in posts) {

  counter++;
  if (counter == 10)
    break;

        <item>
                <title>@p.GetProperty("zContentTitle").Value</title>
                <dc:creator>@p.GetProperty("zPostAuthor").Value</dc:creator>
                <category>@p.GetProperty("zPostCategories")</category>
                <description>@p.GetProperty("zContentBody").Value.StripHtml().Trim()</description>
                <link>http://@Request.Url.Host@landing.Url@p.Url</link>
                <guid isPermaLink="false">http://@Request.Url.Host@landing.Url@p.Url</guid>
                <pubDate>@p.GetProperty("zPostDate").Value.FormatDateTime("ddd, dd MMM yyyy HH:mm:ss") CST</pubDate>
        </item>
}