Последние комментарии
Для меня эта страница - это удобный способ смотреть, что нового происходит в комментариях и сразу находить заметку, не заходя в админку. Думаю, она будет полезна и тебе.
Михаил Фленов
Да, это чудо природы вызвал ToArray() перед Where. Я это упустил. Я в Linq2Sql не спец, потому что не люблю его. Я Linq использую только к массивам, а не к базам данных
Vyacheslav
Да все верно, именно так и нужно делать. Я в своем примере хотел показать, как могло быть в вашем случае на работе.
Михаил Фленов
Я проверю позже, как он был написан. Но я бы твой пример немного изменил все же
.Where(здесь фильтр без использования C#)
.ToArray()
.Where(а вот здесь уже какой угодно фильтр)
Vyacheslav
Скомпилируется, то на ура, но при первом вызове упадет с ошибкой вида:
The specified method 'method name' on the type 'type name' cannot be translated into a LINQ to Entities store expression.
Это произойдет при условии, что Folders - это IQueryable, а не IEnumerable.
Если человек начинает работать с LINQ to Entities, разницу между IQueryable и IEnumerable, он должен понимать.
Ваш код так будет работать всегда(при этом вытягивая все значения таблицы), если его переписать вот так:
_context.Folders.ToList().Where(r => GetDomain(r.FolderID));
Посмотрите внимательно, как был записан первоначальный запрос у вас на работе, наверняка работа велась с интерфейсом IEnumerable.
Михаил Фленов
Ты прямо поставил меня в тупик. Как он увидит ошибку, если у него есть код:
_context.Folders.Where(r => GetDomain(r.FolderID));
Что такое _context ясно. Что такое Folders - это таблица в базе данных. GetDomain пусть выглядит как C# функция вот в таком виде:
bool GetDomain(int test) {
return false;
}
Такой код компилируется на ура.
Vyacheslav
Если программист работал с интерфейсом IQueryable, то он бы получил ошибку, что условие не может транслироваться в SQL. По всей видимости он работает с IEnumerable (прежде чем фильтровать использует один из методов: ToArray(), ToList(), AsEnumerable(), и т.д.) и тут уже не важно какой будет фильтр, вначале все будет тянуться из базы, а потом уже будет применяться фильтр.
warchief
>>У Windows выход из гибернации - почти моментальная загрузка? Даже на компьютерах с SSD она далеко не моментальная.
Ну может и не совсем уж моментальная, но тем не менее мой ноутбук я так и выключаю
>>Гибернация и сон разные вещи.
Я и не говорил что это одно и тоже. Кстати, сейчас проверил сон, выход был долгим, а вот вход - 5 секунд
>>Писишки даже из гибернации выходят больше 3 секунд
Ну ладно, у меня нет мака, и то что я сейчас считаю быстрым или моментальным, после мака видится тормозней улитки:)
Михаил Фленов
У Windows выход из гибернации - почти моментальная загрузка? Даже на компьютерах с SSD она далеко не моментальная.
Гибернация и сон разные вещи.
То есть нажал на кнопку и моментально все на экране и винчестер крутится на все сто процентов и биос уже загружен? Писишки даже из гибернации выходят больше 3 секунд с момента нажатия на кнопку до момента готового к использованию рабочего стола.
warchief
>>В основном просто закрываю крышку и все, он во сне почти не убивает батарею.
В Windows (по крайней мере в семерке) это тоже есть, называется "Гибернация".
- Точно также, почти моментальная загрузка (думаю зависит от скорости жесткого и загруженности оперативной, ибо все это сбрасывается на жесткий диск)
- Вообще не тратит электричество, ибо сам по себе компьютер выключен
>>только секунды 3 надо дать компьютеру, чтобы он раскачегарился.
А такого вообще не надо, в том состоянии в котором выключал, в том же и включится
AntonIva
Mihail, pojaluista, ne obzovite svoih robotnikov. Kak mojno nazvati cheloveka chudom prirodi za odnu malenikuyu oshibku ? Vse mi delaem oshibki, prichem postoyanno. Ponimayu vi mojet biti znoete bolishe drugih, no ne vse je takoe kak vi. Pojaluista poimite mne pravelino, nichego plohovo ne hotel (naprotiv ocheni silino uvajayu za knigi), prosto vigledit ne krasivo. Mojet ya vas nepravelino ponyal, togda igvenite menya, russkii ne rodnoi moi yazik.