Acho que você respondeu principalmente a sua pergunta. A computação deve ser feita no servidor de banco de dados e você quer apenas obter o resultado, não é? Se você estiver usando o SQL Server 2008, poderá criar um procedimento armazenado que aceite parâmetro com valor de tabela . Agora você pode chamar este procedimento diretamente usando ADO.NET ou usando EF e
context.ExecuteStoreQuery
onde você ainda passa DataTable
para SqlParameter
com SqlDbType.Structured
. Se você não usar o SQL Server 2008, precisará de um procedimento armazenado com um grande parâmetro nvarchar passando a lista inteira como uma string delimitada por vírgulas. Seu procedimento armazenado primeiro analisará esta lista para a tabela temporária e, em seguida, processe o cálculo da mesma maneira que com o parâmetro com valor de tabela.