0

我在访问数据或设置数据时对查询没有太大问题,因此我可以将其传递给视图。

这是表达式

  var distinctReplies = pd.Project.ProjectDoc
        .SelectMany(i => i.Comment
            .SelectMany(k => k.CommentReply
                .Select(u => u.User)
            ).Distinct()
        ).Select(g => new {FirstName = g.FirstName, LastName = g.LastName, UserID = g.UserID})
        .ToList();

在这个表达式之后,我想将它与另一个从同一用户模型获取值的表达式连接起来,我想将 distinctReplies 分配给 ViewBag 变量,然后能够循环它并 foreach (var user in @ViewBag.distinctReplies)在剃刀视图中执行此操作。

但是,要真正获得我必须做的价值观distinctReplies.Select(i => i.FirstName)。不知道如何处理。

4

2 回答 2

1

用这个:

@foreach (var reply in (IEnumerable)ViewBag.distinctReplies) 
{
}

您不能枚举 a 的实例dynamic。将其转换IEnumerable为允许语句。

有关更详尽的解释,请参阅此问题。

于 2013-01-22T18:51:30.570 回答
1

我建议创建一些 ViewModel 对象来填充查询结果。能够访问@foreach循环内的属性。

模型

public class UserVM
{
    public int UserID{get; set;}
    public string FirstName {get; set;}
    public string LastName {get; set;}  
}

更新的查询

  var distinctReplies = ....
                .Select(g => new UserVM {FirstName = g.FirstName, 
                                         LastName = g.LastName, 
                                         UserID = g.UserID}).ToList();

然后,在视图中,您需要将 cast 添加到IEnumerable<UserVM>.

看法

@foreach (var user in (IEnumerable<UserVM>) ViewBag.distinctReplies)
于 2013-01-22T20:13:31.073 回答