Цикл Cachach не работает должным образом - PullRequest
1 голос
/ 03 декабря 2011

У меня есть список постов, и у меня есть список мнений, за каждый пост могут голосовать 4 мнения.

Это как:

POST1
Vote (opinion A | 10 votes), vote (opinion B | 2 votes), vote (opinion C | 1 votes), vote (opinion D | 0 votes)

POST2
Vote (opinion A | 3 votes), vote (opinion B | 4 votes), vote (opinion C | 5 votes), vote (opinion D | 7 votes)

Для каждого поста любой пользовательСообщения в своем дневнике, другие пользователи могут голосовать за 1 мнение.

В моем контроллере у меня есть эта строка, чтобы получить сообщения в дневнике:

var diaryPosts = (from d in db.DiaryPosts
                  join e in db.EstadosDeAlma
                  on d.EstadosDeAlmaID equals e.ID
                  join u in db.User
                  on d.UserID equals u.ID
                  orderby d.ID descending
                  select new DiaryPostsSet
                  {
                      PostID = d.ID,
                      EstadoDeAlmaID = e.ID,
                      EstadoDeAlma = e.Title, 
                      Author = u.Nickname,
                      Thumbnail = u.Thumbnail,
                      AuthorComment = d.Content, 
                      Time = d.UpdateTime }).Take(6).ToList();

И я пытаюсь принять для каждого DiaryPostМнение его мнения, и вот моя проблема.У меня это так:

List<ImpressionsSet> impressions = new List<ImpressionsSet>();

foreach (var item in diaryPosts)
{
    impressions = (from i in db.Impressions
                   select new ImpressionsSet
                   {
                       ImpressionID = i.ID,
                       ImpressionTitle = i.Impression,
                       UrlSlug = i.UrlSlug,
                       DiaryPostID = item.PostID,
                       ImpressionNum = i.DiaryImpressions.Count(d => d.DiaryPostsID == item.PostID)
                   }).ToList();
}

Но var 'впечатлений' получает только последний цикл.Я не знаю, как решить эту проблему, потому что у меня был лишь небольшой опыт работы с массивами и списками в C # 4.0.Я не знаю, смогу ли я использовать это как показы [n], я пытался, и это не сработало.

Мне также нужен пример кода о том, как я буду контролировать результаты этого цикла в моей RazorПосмотреть.У меня есть это сейчас:

@foreach (var imp in ViewBag.ImpressionsList)
{
    if (item.PostID == imp.DiaryPostID)
    {
    <td>
        @{ string cbName = imp.UrlSlug;  }
        @{ string impression = imp.ImpressionTitle; }
        @{ string value = imp.DiaryPostID + "|" + imp.ImpressionID + "|" + Session["id"].ToString(); }
        <a class="voto" href="javascript:;" onclick="PostImpressions('@value')">@impression</a>
    </td>
    <td>
        <a class="num" href="javascript:;" onclick="PostImpressions('@value')">@imp.ImpressionNum</a>
    </td>
    }
}

Но я не уверен, что это действительно сработает, потому что у меня нет результатов для 2 постов в моих впечатлениях var, просто получаю последний результат.

Может ли кто-нибудь мне помочь?

1 Ответ

1 голос
/ 03 декабря 2011

вместо:

impressions = ...

До

impressions.AddRange( (from i in db.Impressions
               select new ImpressionsSet
               {
                   ImpressionID = i.ID,
                   ImpressionTitle = i.Impression,
                   UrlSlug = i.UrlSlug,
                   DiaryPostID = item.PostID,
                   ImpressionNum = i.DiaryImpressions.Count(d => d.DiaryPostsID == item.PostID)
               }).ToList() );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...