我使用函数来求和一些字段,但我也必须在函数中使用它们,但我担心它们被计算两次。我担心这会导致将来表现不佳。
var a = dataTable.AsEnumerable();
var test = new
{
contadorSolucao = a.Sum(x => x.Field<int>("ContadorSolucao")),
contadorAssunto = a.Sum(x => x.Field<int>("ContadorAssunto")),
contadorAbertura = a.Sum(x => x.Field<int>("ContadorAbertura")),
contadorMaquinas = a.Sum(x => x.Field<int>("ContadorMaquinas")),
contadorChamados = a.Sum(x => x.Field<int>("ContadorChamados")),
// How can I reuse these fields above (contadorSolucao, contadorAssunto...) instead of below?
// I suppose these fiels are been recalculated twice. How can I avoid this?
porcentagemSolucao = MyFunction(a.Sum(x => x.Field<int>("ContadorSolucao")),
a.Sum(x => x.Field<int>("ContadorMaquinas")),
a.Sum(x => x.Field<int>("ContadorAssunto")),
a.Sum(x => x.Field<int>("ContadorNaoPodemSolucaoRemota")))
/* This don't work
porcentagemSolucao = MyFunction(contadorSolucao, contadorAssunto, contadorAbertura, contadorMaquinas, contadorChamados)
*/
};
答案 0 :(得分:4)
这些值肯定会被计算两次,因为你已经显示了代码。您需要做一些事情来计算值,将它们存储在某个地方,然后从多个位置重复使用它们。
这里最简单的选项可能是将每个总和存储在局部变量中。如果你真的需要这种匿名类型,那么你可以根据当地人创建它。