2011-12-03 21 views
1

私は投稿のリストを持っています。私は意見のリストを持っています。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(); 
} 

しかし、 'impressions' varは最後のループだけを取得します。私はそれを解決する方法がわかりませんが、C#4.0では配列とリストに関する経験はほとんどありませんでした。私はそれが印象[n]のように使うことができるかどうかわかりません。私は試しましたが、うまくいきません。

また、私の剃刀ビューでこのループの結果を制御する方法に関するサンプルコードが必要です。 私は今、この持っている:

@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つのポストの結果を持っていけないcuzの私は、それが本当にうまくいくかどうかわからないんだけど、それだけで最後の結果を取得します。

誰でもお手伝いできますか?

答えて

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

を行い= D @Klausありがとうございました –

関連する問題