3

アイテムの前半だけでリストを反復しようとしていますが、リストの残りの半分だけでリストを反復したいと思います。何か案は ?

@foreach (var category in Model.Categories.OrderBy(i => i.CategoryName))
{
  <li>
    <div id="category_@(category.SKU)" 
         class="itemBlock" 
         onclick="toggle('@(category.SKU)')">
  </li>
}
4

5 に答える 5

3

何かのようなもの:

var categories = Model.Categories.OrderBy(i => i.CategoryName).ToList();
int noOfCategories = categories.Count();
int half = noOfCategories/2;

for (int x = 0; x < half; x++)
{
    var category = categories[x];
    //your logic here
}
for (int x = half; x < noOfCategories; x++)
{
    var category = categories[x];
    //your logic here
}

トリックを行う必要があり、構文が 100% であることを保証することはできませんが、必要なすべてが得られるはずです!

于 2012-04-19T15:58:29.690 に答える
2

for loop を使用するだけです。

for(int i=0; i < Model.Categories.OrderBy(i => i.CategoryName).Count/2; i++)
{
    // do stuff
}

for(int i=Model.Categories.OrderBy(i => i.CategoryName).Count/2; i < Model.Categories.OrderBy(i => i.CategoryName).Count; i++)
{
    // do different stuff
}
于 2012-04-19T15:57:08.430 に答える
1

そのロジックをモデルにプッシュしてから、ビュー用にフォーマット済みのデータを取得することを強くお勧めします。

[Serializable]
public class YourModel
{
    private int _mid
    {
        get { Categories.Count / 2; }
    }
    private int _top
    {
        get { Categories.Count - _mid; }
    }
    public List<Category> CategoriesLowerHalf
    {
        get { Categories.OrderBy(i => i.CategoryName).Take(_mid); }
    }
    public List<Category> CategoriesUpperHalf
    {
        get { Categories.OrderBy(i => i.CategoryName).GetRange(_mid, _top); }
    }
    // rest of your model
}

次に、あなたの見解で:

@foreach (var category in Model.CategoriesLowerHalf)
{
   <li>
      <div id="category_@(category.SKU)" class="itemBlock" onclick="toggle('@(category.SKU)')">category.Name</div>
   </li>
 }

@foreach (var category in Model.CategoriesUpperHalf)
{
   <li>
      <div id="category_@(category.SKU)" class="itemBlock" onclick="toggle('@(category.SKU)')">category.Name</div>
   </li>
 }
于 2012-04-19T16:59:55.673 に答える
0

おそらく、リストを 2 つの配列に分割し、必要に応じてそれぞれの配列でループを実行できます。

于 2012-04-19T15:53:45.643 に答える
0

次のコードは私のアプリで機能しました。

                      @{
                            int a = 0;
                            int b = 0;
                        }

                   <li>
                        @foreach (var item in Model.NameHere)
                        {
                           //write code here
                            a++;
                            if (a == Model.Offices.Count() / 2)
                            {
                                break;
                            }
                        }
                    </li>

                    <li>
                        @foreach (var item in Model.NameHere)
                        {

                            if (b >= Model.Offices.Count() / 2)
                            {
                                //write code here
                            }
                            b++;
                        }
                    </li>
于 2015-04-19T21:12:11.490 に答える