C# 如何优化此简短的代码(包括最佳实践问题)

C# 如何优化此简短的代码(包括最佳实践问题),c#,.net,C#,.net,这是我经常问自己的一个问题。这是一个没有重复代码的代码: private static void delete(Guid teamID, Guid repID) { using (var context = AccesDataRépart.GetNewContext()) { Team_Representant teamRepresentant = getTeamRep(teamID, repID); if (teamRepresentant !=

这是我经常问自己的一个问题。这是一个没有重复代码的代码:

private static void delete(Guid teamID, Guid repID)
{
    using (var context = AccesDataRépart.GetNewContext())
    {
        Team_Representant teamRepresentant = getTeamRep(teamID, repID);
        if (teamRepresentant != null)
            context.Team_Representant.DeleteOnSubmit(teamRepresentant);
        context.SubmitChanges();
    }
}

private static Team_Representant getTeamRep(Guid teamID, Guid repID)
{
    using (var context = AccesDataRépart.GetNewContext())
    {
        return (from c in context.Team_Representant
                where c.RepID == repID &&
                      c.TeamID == teamID
                select c).FirstOrDefault();
    }
}
拥有
getTeamRep
函数是正常的,它经常被使用。另一方面,我不会重复它在
Delete
函数中包含的查询,因为它会生成额外的步骤,并且通常会比较慢

在这种情况下你会怎么做?您是在
Delete
函数中重复
getTeamRep
linq查询,还是接受这个额外的工作负载


谢谢

我什么事都不会做两次:)。创建一个变量来保存getTeamRep的结果

如果您以前从未尝试过,那么请去掉静态内容,并使用这些实例方法。有一个团队类和一个代表类,让团队包含他们的代表。这样做可能会更有趣,而且可以避免查找同一对象两次的整个问题

这是偏好的问题。我发现实例方法在大多数情况下更优雅,因为参数更少:

 Team team = new Team(teamID);

 team.Delete(repID);

静态方法?这是存储库吗?或者web服务?你能给我们一些额外的上下文吗?它是静态的,因为它是一个数据访问类。不是一个web服务,但接近于。现在我不明白为什么它被评为-1级。问题很简单,所以我不会浪费人们的时间在不必要的信息上。那么你可能想把上下文变量变成一个实例变量。然后所有操作都在一个上下文中完成。谷歌工作单元和存储库模式。我从来没有这样想过,但我喜欢这样。我会在我的下一个应用程序中完全遵循这个想法(这一个几乎完成了)。非常感谢。我只是想补充一点,按照我在上面示例中建议的方式,如果您在团队类上实现IEnumerable接口(或更好的接口),将允许您在.NET中进行数据绑定,这将自动让您显示,例如,每个团队在报表上的代表、WinForm或WebForm、WPF控件等等。感谢您的添加,我一定要把它挖出来!