我对查询的访问数据或设置问题没有太多问题,因此我可以将其传递给视图。
这是表达式
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)
。不知道如何处理这个。
答案 0 :(得分:1)
使用此:
@foreach (var reply in (IEnumerable)ViewBag.distinctReplies)
{
}
您无法枚举dynamic
的实例。将其转换为IEnumerable
以获取允许的语句。
有关详细说明,请参阅this question。
答案 1 :(得分: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();
然后,在视图中,您需要将强制转换添加到IEnumerable<UserVM>
。
查看强>
@foreach (var user in (IEnumerable<UserVM>) ViewBag.distinctReplies)