Foreach不会将每个项目从foreach添加到ViewModel

时间:2017-06-12 23:18:36

标签: c# asp.net-mvc foreach

我确信我只是在考虑这个问题,但是我正在努力获得一份清单,除了一件事以外,一切都有效。而且我知道为什么要这样做,它会获得分配给循环外部的foreach的最后一项并返回该项。但是我想要归还他们所有人。 我做错了什么?

var cheeses = _repository.GetAllYearSetupIds();
var gouda = new CollectionsManagementViewModel();
var yearSetupId = 0;
foreach(var cheddar in cheeses)
{
    yearSetupId = cheddar.YearSetupId;
    gouda = _repository.GetOverdueBalances(page, pageLength, yearSetupId, balancefilter, sort, direction == Constants.ascending, spreadsheetType);
    gouda.Title = title + " Management";
}      
return View("CollectionsManagement", gouda);

2 个答案:

答案 0 :(得分:3)

目前,您正在循环中的每次迭代更新名为CollectionsManagementViewModel的{​​{1}}的单个实例。循环gouda将具有上一次迭代的值。

您应该在每次迭代时创建gouda的新实例,并将此实例添加到视图模型列表中。当然,命名应该是有意义的:

CollectionsManagementViewModel

答案 1 :(得分:0)

您好希望以下代码可能对您有所帮助

var cheeses = _repository.GetAllYearSetupIds();
var lstgouda = new  List<CollectionsManagementViewModel>();  //make a list
var yearSetupId = 0;
foreach(var cheddar in cheeses)
{

    var gouda = new  CollectionsManagementViewModel(); 
    yearSetupId = cheddar.YearSetupId;
    gouda = _repository.GetOverdueBalances(page, pageLength, yearSetupId, balancefilter, sort, direction == Constants.ascending, spreadsheetType);
    gouda.Title = title + " Management";
    lstgouda.add(gouda);  //add it to list
}      
return View("CollectionsManagement", lstgouda);

由于 KARTHIK