2012-01-05 9 views
1

私はforeachループですべてをフェッチしていますが、10後には停止したいと考えています。代わりにforを使用する必要があります。しかし、私はそれを書く方法を理解していないが、依然として必要なvarを割り当てている。foreachループに任意の制限を設定するにはどうすればよいですか?

@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://@[email protected]@p.Url</link> 
       <guid isPermaLink="false">http://@[email protected]@p.Url</guid> 
       <pubDate>@p.GetProperty("zPostDate").Value.FormatDateTime("ddd, dd MMM yyyy HH:mm:ss") CST</pubDate> 
     </item> 
} 
+0

このシナリオでforeachは同じタスクを実行します。ブレークポイントを設定して、どのくらいの要素が「投稿」に含まれているかを確認してください。 – user1231231412

+0

これは私の最初の時間aspを使用してあなたの答えに対処しない場合は私を許してください。これが今実行されるとき、それは66のすべてのポスト(現在および成長している)を返します。私はそれが10時に停止したい。 –

+0

ああ。 jessegavinのソリューションを使用するか、for()ループを使用して、値10をハードコーディングできます。ビューの構文はわかりませんが、for(int i = 0; i <10; i ++){}のようになります。 – user1231231412

答えて

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://@[email protected]@p.Url</link> 
      <guid isPermaLink="false">http://@[email protected]@p.Url</guid> 
      <pubDate>@p.GetProperty("zPostDate").Value.FormatDateTime("ddd, dd MMM yyyy HH:mm:ss") CST</pubDate> 
    </item> 
} 
0

postsIEnumerableインターフェイスを実装し、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://@[email protected]@p.Url</link> 
       <guid isPermaLink="false">http://@[email protected]@p.Url</guid> 
       <pubDate>@p.GetProperty("zPostDate").Value.FormatDateTime("ddd, dd MMM yyyy HH:mm:ss") CST</pubDate> 
     </item> 
} 
関連する問題