Прежде всего, я хочу сказать, что я новичок в .NET, и я новичок в английском.: (
У меня есть следующий код в контроллере: я хочу отправить набор данных клиентам. Мне нужно выполнить эту обработку, чтобы обеспечить подходящую визуализацию в приложении переднего плана. Однако я заметилчто выполнение кода очень медленное, особенно когда выполняется первое условное выражение. Переменная «result» содержит все мои данные, и на самом деле ее размер небольшой, всего около 40 записей (result.Count () - 40).
var response = new List<object>();
//the results are retrieved quickly from the database
var result = (from a in obj.TBRelPadraoCorEstado
join b in obj.TBCorAlarme on a.idCor equals b.idCor
join c in obj.TBEstadoAlarme on a.idEstado equals c.idEstado
join d in obj.TBPadraoCor on a.idPadrao equals d.idPadraoCor
select new
{
idRelPadraoCor = a.idRelPadraoCor,
idPadrao = (int)d.idPadraoCor,
nomePadrao = d.nomePadrao,
idEstado = a.idEstado,
idCor = a.idCor,
hexCor = b.hexCor,
nomeCor = b.nomeCor,
estadoAlarme = c.estadoAlarme,
permiteReconhecimento = a.permiteReconhecimento,
isReconhecido = a.isReconhecido,
prioridade = a.prioridade
}).OrderBy(d => d.idPadrao).AsEnumerable();
int size = result.Count();
List<object> buffer = new List<object>();
for (int i = 0; i < size - 1; i++)
{
//at this point, the code execution become very slow.
if ((int)result.ElementAt(i).idPadrao == (int)result.ElementAt(i + 1).idPadrao)
{
buffer.Add(new
{
idRelPadraoCor = result.ElementAt(i).idRelPadraoCor,
idPadrao = result.ElementAt(i).idPadrao,
idEstado = result.ElementAt(i).idEstado,
idCor = result.ElementAt(i).idCor,
hexCor = result.ElementAt(i).hexCor,
nomeCor = result.ElementAt(i).nomeCor,
estadoAlarme = result.ElementAt(i).estadoAlarme,
permiteReconhecimento = result.ElementAt(i).permiteReconhecimento,
isReconhecido = result.ElementAt(i).isReconhecido,
prioridade = result.ElementAt(i).prioridade
});
}
else
{
buffer.Add(new
{
idRelPadraoCor = result.ElementAt(i).idRelPadraoCor,
idPadrao = result.ElementAt(i).idPadrao,
idEstado = result.ElementAt(i).idEstado,
idCor = result.ElementAt(i).idCor,
hexCor = result.ElementAt(i).hexCor,
nomeCor = result.ElementAt(i).nomeCor,
estadoAlarme = result.ElementAt(i).estadoAlarme,
permiteReconhecimento = result.ElementAt(i).permiteReconhecimento,
isReconhecido = result.ElementAt(i).isReconhecido,
prioridade = result.ElementAt(i).prioridade
});
var copyList = new List<object>(buffer);
response.Add(new { nomePadrao = result.ElementAt(i).nomePadrao, idPadrao = result.ElementAt(i).idPadrao, stateSet = copyList });
buffer = new List<object>();
}
}
return Ok(response);
Чтобы понять мою проблему: если я отправляю только контент «результата», это занимает около 40 миллисекунд. С другой стороны, если я выполняю фрагмент цикла, это занимает около 8000 или даже10000 миллисекунд ] 1
Может кто-нибудь рассказать мне о происходящем?
Спасибо за ваше терпение.