2011-12-03 35 views
1

我有一個帖子列表,我有一個意見列表,有4個意見的用戶可以爲每個帖子投票。C#Foreach循環無法按預期工作

這就像:

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> 
    } 
} 

但我不知道這是否會真正的工作,因爲我不要有在我的印象VAR的2個職位的結果,它只是得到最後的結果。

任何人都可以幫助我嗎?的

回答

1

代替:

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()); 
+0

THANK YOU = d @Klaus –