Улучшение запроса linq to entity

103
21 мая 2021, 10:40

Есть функция, которая отдает объкты, которых нет в БД по пришедшему списку. Как видно, с помощью Read я сначала считываю все данные, а потом отбираю. Как я могу избавиться от этого Read() чтобы ускорить сам запрос???

public List<PermDTO> GetPermsNotIn(List<PermDTO> perms)
{
    var res = this.db.PermRepository.Read().ToList();
    var res2 =  res.GroupJoin(perms, r => new { r.kgroup_name, r.perm_name }, p => new { p.kgroup_name, p.perm_name }, (r, p) => new
    {
        id = r.id,
        description = r.description,
        isactive = r.isactive,
        kgroup_name = r.kgroup_name,
        perm_name = r.perm_name,
        count = p.Count()
    });
    var res3 = res2.Where(w => w.count == 0);
    var res4 = res3.Select(s => new PermDTO()
    {
        id = s.id,
        description = s.description,
        isactive = s.isactive,
        kgroup_name = s.kgroup_name,
        perm_name = s.perm_name,
    });
    var res5 = res4.ToList();
    return res5;
}

    public virtual IQueryable<T> Read()
    {            
        return context.Set<T>().AsNoTracking();
    }
Answer 1
var res = this.db.PermRepository.Read().Where(w => w.count == 0).ToArray();

тут ты не вытаскиваешь все данные, а только те которые по условию совпадают.

READ ALSO
Всегда ли надо ли возвращать IActionResult?

Всегда ли надо ли возвращать IActionResult?

Надо ли возвращать IActionResult во всех случаях когда результата работы функции нет?

131
Профилировщик Visual Studio 2017: Failed to analyze report, Отказано в доступе по пути C:\Program files\dotnet\мой_проект.dll

Профилировщик Visual Studio 2017: Failed to analyze report, Отказано в доступе по пути C:\Program files\dotnet\мой_проект.dll

Попытался сделать профилирование и оно упало с ошибкой, как описано в вопросеЯ понять не могу, зачем он лезет по этому пути: C:\Program files\dotnet\название_моего_проекта

323
c# Как сделать мультиязычное приложение?

c# Как сделать мультиязычное приложение?

Нужно сделать переключения языков на форме

198