У меня есть две таблицы TableProject
и TableFlag
; Я хочу присоединиться к ним вместе с некоторыми условиями. Итак, сначала я получаю список из первой таблицы, затем проверяю вторую таблицу, чтобы найти правильное значение в a для l oop.
Хотя это работает, но довольно медленно, это занимает около 10 секунд.
// Step 1 get the list from the first table
var temp = Task.FromResult(await myDatabase.TableProject.
Select(p => new ProjectDto
{
Id = p.Id,
Name = p.Name,
Type = p.Type,
Status = p.Status
})
.Where(x => x.Type != 999)
.Orderby(y => y.Name).ToListAsync());
var list = temp.Result;
// Step 2 check the second table to find right values in a for loop.
for(int i = 0; i < list.Count; i++)
{
if(list[i].Type.HasValue)
{
list[i].ProjectType = (from f in myDatabase.TableFlag
where f.FlagName == "PROJECT TYPE" && f.FlagId == list[i].Type
select f.FlagValue).FirstOrDefaut();
}
if(list[i].Type.HasValue)
{
list[i].Status = (from f in myDatabase.TableFlag
where f.FlagName == "PROJECT STATUS" && f.FlagId == list[i].Status
select f.FlagValue).FirstOrDefaut();
}
}
return Json(list);
Если вы посмотрите на шаг 2, потребуется время o (n ^ 2).
Обновление:
Sql запрос (T - SQL) приветствуется. Я могу использовать хранимую процедуру.