返回匿名类型的简单方法(使用LINQ实现MVC)

Blu*_*eft 5 c# linq asp.net-mvc linq-to-entities linq-to-sql

我想在使用LINQ(特别是LINQ到实体)时实现MVC.我这样做的方法是让Controller使用LINQ生成(或调用生成的)结果集,然后将其返回到View以显示数据.问题是,如果我这样做:

return (from o in myTable select o);
Run Code Online (Sandbox Code Playgroud)

所有列都从数据库中读取,即使是我不想要的列(可能是几十列).而且 - 更重要的是 - 我做不到这样的事情:

return (from o in myTable select new { o.column });
Run Code Online (Sandbox Code Playgroud)

因为没有办法让匿名类型安全!我知道确实没有好的,干净的方式在3.5中这样做(不干净......),但4.0怎么样?有什么计划,甚至提议? 如果没有像duck-typing-for-LINQ那样的东西,或类型安全的匿名返回值(在我看来,编译器当然应该能够做到这一点),似乎几乎不可能将Controller与View完全分开.

Blu*_*eft 1

既然没有人试图回答我的问题,我就自己回答吧。

事实证明,C# 4.0 支持鸭子类型 - 他们称之为动态类型。然而,在使用动态类型返回匿名类型时,我们失去了强类型的好处:

  • 编译时类型检查
  • 表现
  • 智能感知

我在这里提出了一个具有强类型匿名返回类型的功能请求- 如果您认为这对 C# 5 来说是一个有用的补充,请点击链接并让 .Net 团队知道!