2

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”作为静态方法

我正在使用实体框架,而db是我的上下文。

我想知道通过这样的改变我可以得到什么好处或可以避免什么问题。

4

2 回答 2

2

Resharper 只是提供它作为它可以为您做的事情。它还将提供将静态方法调用转换为扩展方法调用的功能。

确实这是一个偏好问题 - 一个没有优势 - 它们编译为相同的东西,但您应该将它用作扩展方法。在使用 LINQ 时,将扩展方法语法用于扩展方法而不是简单的静态调用更为流行。

于 2012-10-16T21:38:07.590 回答
0

扩展方法(C# 编程指南)

在您的代码中,您使用实例方法语法调用扩展方法。但是,编译器生成的中间语言 (IL) 会将您的代码转换为对静态方法的调用。因此,封装的原则并没有真正被违反。事实上,扩展方法不能访问它们扩展类型的私有变量。

于 2012-10-16T21:41:39.610 回答