2015-06-18 5 views
1
public ActionResult LatestNews() 
{ 
    using (NDTMS2UtilsEntities newsEntities = new NDTMS2UtilsEntities()) 
    { 
     var newsItems = newsEntities.News.OrderByDescending(ni => ni.DateCreated).Take(5); 

     int n = 0; 
     var urlList = new List<string>(); 
     var newsModel = new List<NewsManagerViewModel>(); 

     while (n < newsItems.Count()) 
     { 
      string newsUrl = 
       new Uri(Request.Url.Scheme + "://" + Request.Url.Host + ":3153/News/Index/" + n).ToString(); 

      urlList.Add(newsUrl); 

      n++; 
     } 
     newsModel = newsItems.Select(item => new NewsManagerViewModel() 
     { 
      Title = item.Title, 
      NewsContent = item.NewsContent, 
      DateCreated = (DateTime) item.DateCreated 
     }).ToList(); 

     return PartialView(newsModel); 
    } 
} 

код выше создает список топ-5 новостей упорядоченные по дате по убыванию, я создал два списка один список URL-адресов называется urlList и другой, который содержит новости предметы под названием newsModel.добавить список строк в список ViewModel

urlList - это список строк и newsModel - это список NewsManagerViewModel, в каждом списке имеется ровно 5 элементов.

Я ищу способ объединения этих двух списков, чтобы каждый URL соответствовал каждому новостному элементу.

В настоящее время, если я объединяю списки, используя newsModel.AddRange(urlList), все новости имеют одинаковый идентификатор в конце (4), тогда как мое требование заключается в том, чтобы первый элемент новостей имел идентификатор 0 и последний идентификатор 4.

Любые предложения были бы очень оценены.

ответ

2

Вместо того, чтобы создавать их отдельно, вы можете создать их сразу в одном for.

public ActionResult LatestNews() 
{ 
    using (NDTMS2UtilsEntities newsEntities = new NDTMS2UtilsEntities()) 
    { 
     var newsItems = newsEntities.News.OrderByDescending(ni => ni.DateCreated).Take(5).ToList(); 

     var newsModel = new List<NewsManagerViewModel>(); 

     for(int n = 0; n < newsItems.Count(); n++) 
     { 
      string newsUrl = new Uri(Request.Url.Scheme + "://" + Request.Url.Host + ":3153/News/Index/" + n).ToString(); 
      var item = newsItems[n]; 
      var newsManagerModel = new NewsManagerViewModel() 
      { 
       Title = item.Title, 
       NewsContent = item.NewsContent, 
       DateCreated = (DateTime) item.DateCreated, 
       NewsUrl = newsUrl // add the url 
      } 
      newsModel.Add(newsManagerModel) 
     } 

     return PartialView(newsModel); 
    } 
} 
Смежные вопросы