ReSharper建议我做出以下改动:
自:
foreach (var item in db.Proposta.GroupBy(x => x.StatusProposta.Nome))
{
...
}
要:
foreach (var item in Queryable.GroupBy(db.Proposta, x => x.StatusProposta.Nome))
{
...
}
消息为:将方法'GroupBy'调用为静态方法
我正在使用实体框架而数据库是我的背景。
我想知道我可以获得什么样的优势,或者我可以通过这样的改变避免出现的问题。
答案 0 :(得分:2)
Resharper只是提供它可以为你做的事情。它同样会将静态方法调用转换为扩展方法调用。
真的是一个偏好的问题 - 一方面没有优势 - 它们编译成相同的东西,但你应该使用它作为扩展方法。在使用LINQ时,使用扩展方法语法扩展方法而不是普通静态调用会更受欢迎。
答案 1 :(得分:0)
来自Extension Methods (C# Programming Guide)
在您的代码中,您使用实例方法调用扩展方法 句法。但是,由中间语言(IL)生成 编译器将您的代码转换为静态方法的调用。 因此,封装原理并非如此 侵犯。实际上,扩展方法无法访问私有变量 他们正在扩展的类型。