Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 房产价格下跌了一级_C#_Linq_Entity Framework_Lambda - Fatal编程技术网

C# 房产价格下跌了一级

C# 房产价格下跌了一级,c#,linq,entity-framework,lambda,C#,Linq,Entity Framework,Lambda,我对查询没有太大的问题,而是访问数据或设置数据以便将其传递给视图 这是表达式 var distinctReplies = pd.Project.ProjectDoc .SelectMany(i => i.Comment .SelectMany(k => k.CommentReply .Select(u => u.User) ).Distinct() ).Selec

我对查询没有太大的问题,而是访问数据或设置数据以便将其传递给视图

这是表达式

  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(@ViewBag.distinctReplies中的var user)
在razor视图中

但是,要真正获得这些值,我必须执行
distinctReplies。选择(I=>I.FirstName)
。不确定如何处理此问题。

使用此选项:

@foreach (var reply in (IEnumerable)ViewBag.distinctReplies) 
{
}
您不能枚举
动态
的实例。将其强制转换为
IEnumerable
,以允许该语句


有关更详细的解释,请参阅。

我建议创建一些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

查看

@foreach (var user in (IEnumerable<UserVM>) ViewBag.distinctReplies)
@foreach(在(IEnumerable)ViewBag.distinctReplies中的变量用户)

我不明白,到底是什么问题?这不完全是我所做的,但它让我走上了正确的道路,我在现有的viewmodel中添加了一个“用户”模型并分配了它,这很有效。如果你已经创建了一个模型,那么就不应该使用ViewBag。将模型集返回到视图:
返回视图(“MyView”,mymodelset)。当然,更好的方法是根本不把它放在
ViewBag
中。并使用强类型视图。您将如何访问reply
object
的原始属性?此时您不能不进行反射。不应将匿名类型用作视图模型。实现@mipe34答案中建议的ViewModel。然后您可以将
var
替换为
YourType