C# 如何重用已计算的匿名属性
我用一个函数对一些字段求和,但我也必须在函数中使用它们,但我担心它们会被计算两次。我担心这会导致未来的糟糕表现C# 如何重用已计算的匿名属性,c#,linq,C#,Linq,我用一个函数对一些字段求和,但我也必须在函数中使用它们,但我担心它们会被计算两次。我担心这会导致未来的糟糕表现 var a = dataTable.AsEnumerable(); var test = new { contadorSolucao = a.Sum(x => x.Field<int>("ContadorSolucao")), contadorAssunto = a.Sum(x =>
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)
*/
};
var a=dataTable.AsEnumerable();
var测试=新
{
contadorSolucao=a.Sum(x=>x.Field(“contadorSolucao”)),
contadorassto=a.Sum(x=>x.Field(“contadorassto”),
contadorAbertura=a.Sum(x=>x.Field(“contadorAbertura”),
contadorMaquinas=a.Sum(x=>x.Field(“contadorMaquinas”),
contadorChamados=a.Sum(x=>x.Field(“contadorChamados”),
//我如何重用上面的字段(contadorSolucao、ContadorAssto…)而不是下面的字段?
//我想这些领域已经重新计算过两次了。我怎样才能避免这种情况呢?
PorcentageMolucao=MyFunction(a.Sum(x=>x.Field(“ContadorSolucao”)),
a、 总和(x=>x.Field(“ContadorMaquinas”),
a、 总和(x=>x.Field(“contadorassto”),
a、 总和(x=>x.Field(“ContadorNaoPodemSolucaoRemota”))
/*这不管用
PorcentageMolucao=MyFunction(contadorSolucao、ContadorAssto、contadorAbertura、contadorMaquinas、contadorChamados)
*/
};
如您所示,这些值肯定会计算两次。您需要做一些事情来计算这些值,将它们存储在某个位置,然后从多个位置重新使用它们
这里最简单的选择可能是将每个和存储在局部变量中。如果您确实需要此匿名类型,则可以基于这些局部变量创建它。使用这些计算属性以及原始数据创建其他匿名对象,然后再创建另一个
选择或其他任何东西。。它必须是匿名对象吗?创建一个具体的类来处理这个.Tks!我以前做过,但我认为我可以在同一表达式中重复使用它们,但如果不可能,我将遵循您的建议;)