【发布时间】:2012-07-22 18:15:42
【问题描述】:
我在 MVC 项目中有一个聚合数据视图,它显示按审计状态细分的每月总计。控制器代码使用简单的 LINQ 投影到匿名对象中进行设置,如下所示:
From audits In db.Audits
Group By key = audits.DateCreated.Value.Month Into g = Group
Select New With {
.Month = key,
.Assigned = g.Sum(AuditsWithStatus(AuditStatus.Issued)),
.Unassigned = g.Sum(AuditsWithStatus(AuditStatus.Pending)),
.Closed = g.Sum(AuditsWithStatus(AuditStatus.Closed)),
.Cancelled = g.Sum(AuditsWithStatus(AuditStatus.Cancelled))
}
我知道这是 LINQ 的一大优势(使用匿名类型),但我不喜欢失去视图中的强类型(即@ModelType SomeStrongType)。对此有什么一般性建议吗?处理该问题的文章、博客或其他地方以及何时使用?
【问题讨论】:
-
匿名类型在编译时生成。从运行时的角度来看,它们仍然是强类型的——它们只是具有编译器生成的名称。
标签: asp.net-mvc linq projection strong-typing