如何执行我需要的foreach循环?

时间:2011-12-02 21:31:15

标签: linq asp.net-mvc-3 c#-4.0 razor foreach

我有一个有日记的网络应用程序。在这个日记中,我可以发布更新,我的朋友可以看到并投票。他们可以喜欢,不像等等。

所以,我接受了最后6个帖子,我还必须为每个帖子进行投票(比如,不像等)。

我的问题是如何才能获得与日记帖子相关的印象? 我试过这个:

var impressions = "";

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

但是通过这种方法,我得到了错误:

Cannot implicity convert type 'System.Collections.Generic.List<...>' to 'string'

我希望此var“展示次数”获得与我在页面中显示的这6篇帖子相关的所有展示次数。

所以,在我的日记帖子中,我会有另一个foreach到我的印象和它的计数但另一方面,这个var'印象'将在内部有2个foreach循环,每个帖子一个,以及一个foreach印象。

有没有人可以通过我的控制器示例和我的剃刀View帮助我? 我的解释清楚了吗? 提前谢谢。

3 个答案:

答案 0 :(得分:2)

展示次数为字符串类型。

var impressions = "";

您尝试将列表分配给该变量。

将其更改为

List<ImpressionSet> impressions;

答案 1 :(得分:1)

尝试这个

var allimpressions = diaryPosts.SelectMany(dp => {
         return (from i in dp.Impressions
          select new ImpressionsSet
          {
           ImpressionID = i.ID,
           ImpressionTitle = i.Impression,
           ImpressionNum = i.DiaryImpressions.Count(d => d.DiaryPostsID == dp.PostID)
          }).ToList();
         });

答案 2 :(得分:0)

    var allimpressions = 
    from dp in diaryPosts
    from i in dp.Impressions
    let count = i.DiaryImpressions.Count (di => di.DiaryPostsID == dp.PostID)
    select new { ImpressionID = i.ID, ImpressionTitle = i.Impression, ImpressionNum = count };