Почему технологии усложняют простые вещи?
От: Разраб  
Дата: 27.03.24 04:32
Оценка: :)
Потратил на linq минут 30, в итоге — болт и переписал за 30 секунд на православном структурном яп))
        // var _productSummary = from c in db.Categories
        //                       join p in db.Products
        //                       on c.Id equals p.CategoryId into cp
        //                       select new { c, cp };
        // foreach (var x in _productSummary)
        // {
        //     productSummary.Add(x.c.Name, x.cp.ToList()); // <= Translating this query requires the SQL APPLY operation, which is not supported on SQLite.
        // }

        var categries = db.Categories.ToList();
        var products = db.Products.ToList();
        foreach (var x in categries)
            productSummary.Add(x.Name, products.FindAll(p => p.CategoryId == x.Id));


Как вовремя заменить, что это "чужая колея" (ц) В.С. Высоцкий
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re: Почему технологии усложняют простые вещи?
От: Буравчик Россия  
Дата: 27.03.24 05:13
Оценка: 3 (1) +1
Здравствуйте, Разраб, Вы писали:

Р>Потратил на linq минут 30, в итоге — болт и переписал за 30 секунд на православном структурном яп))


В твоем варианте сложность O(C*P), в sql варианте сложность O(C+P) при наличии индексов в БД.
Best regards, Буравчик
Re: Почему технологии усложняют простые вещи?
От: amironov79  
Дата: 27.03.24 06:19
Оценка: 1 (1)
Здравствуйте, Разраб, Вы писали:

Р>Потратил на linq минут 30, в итоге — болт и переписал за 30 секунд на православном структурном яп))


Так это простой SQLite не все технологии поддерживает А если через GroupBy или GroupJoin переписать?
Re[2]: Почему технологии усложняют простые вещи?
От: amironov79  
Дата: 27.03.24 06:23
Оценка:
Здравствуйте, Буравчик, Вы писали:

Р>>Потратил на linq минут 30, в итоге — болт и переписал за 30 секунд на православном структурном яп))


Б>В твоем варианте сложность O(C*P), в sql варианте сложность O(C+P) при наличии индексов в БД.


Можно сделать ToDictionary вместо ToList.
Re[3]: Почему технологии усложняют простые вещи?
От: Буравчик Россия  
Дата: 27.03.24 06:48
Оценка:
Здравствуйте, amironov79, Вы писали:

A>Можно сделать ToDictionary вместо ToList.


Тогда это будет требовать памяти O(N), а не O(1) для sql.
Best regards, Буравчик
Re[4]: Почему технологии усложняют простые вещи?
От: amironov79  
Дата: 27.03.24 06:58
Оценка:
Здравствуйте, Буравчик, Вы писали:

A>>Можно сделать ToDictionary вместо ToList.


Б>Тогда это будет требовать памяти O(N), а не O(1) для sql.


Можно формировать словарь в цикле
Re[5]: Почему технологии усложняют простые вещи?
От: Буравчик Россия  
Дата: 27.03.24 07:02
Оценка:
Здравствуйте, amironov79, Вы писали:

A>Можно формировать словарь в цикле


Как так?
Best regards, Буравчик
Re: Почему технологии усложняют простые вещи?
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 27.03.24 07:52
Оценка: +1
Здравствуйте, Разраб, Вы писали:

Р>Потратил на linq минут 30, в итоге — болт и переписал за 30 секунд на православном структурном яп))

Р>
Р>        // var _productSummary = from c in db.Categories
Р>        //                       join p in db.Products
Р>        //                       on c.Id equals p.CategoryId into cp
Р>        //                       select new { c, cp };
Р>        // foreach (var x in _productSummary)
Р>        // {
Р>        //     productSummary.Add(x.c.Name, x.cp.ToList()); // <= Translating this query requires the SQL APPLY operation, which is not supported on SQLite.
Р>        // }

Р>        var categries = db.Categories.ToList();
Р>        var products = db.Products.ToList();
Р>        foreach (var x in categries)
Р>            productSummary.Add(x.Name, products.FindAll(p => p.CategoryId == x.Id));

Р>


Интересно, а откуда у тебя x.cp.ToList() появится? Ты же Group By не делал
https://metanit.com/sql/sqlite/4.6.php
https://metanit.com/sharp/tutorial/15.6.php
и солнце б утром не вставало, когда бы не было меня
Re[6]: Почему технологии усложняют простые вещи?
От: amironov79  
Дата: 27.03.24 09:24
Оценка:
Здравствуйте, Буравчик, Вы писали:

A>>Можно формировать словарь в цикле


Б>Как так?


Бежать по db.Products и сразу заполнять productSummary.
Re: Почему технологии усложняют простые вещи?
От: binnom  
Дата: 29.03.24 21:18
Оценка: +1
Здравствуйте, Разраб, Вы писали:

Р>Потратил на linq минут 30, в итоге — болт и переписал за 30 секунд на православном структурном яп))

Р>
Р>        // var _productSummary = from c in db.Categories
Р>        //                       join p in db.Products
Р>        //                       on c.Id equals p.CategoryId into cp
Р>        //                       select new { c, cp };
Р>        // foreach (var x in _productSummary)
Р>        // {
Р>        //     productSummary.Add(x.c.Name, x.cp.ToList()); // <= Translating this query requires the SQL APPLY operation, which is not supported on SQLite.
Р>        // }

Р>        var categries = db.Categories.ToList();
Р>        var products = db.Products.ToList();
Р>        foreach (var x in categries)
Р>            productSummary.Add(x.Name, products.FindAll(p => p.CategoryId == x.Id));

Р>


Главное что бы в этих таблицах не было миллионов рекордов. Materialization is a bitch...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.