Наткнулся на довольно интересную и сложную тему под названием "Деревья выражений". Изучил несколько примеров по этой теме - у меня возник вопрос: "К чему такое издевательство?"
Я так понимаю, они использовались когда еще не было лямбы, анонимных функций и т.д.? Если нет, то в чём их суть и где они могут быть полезны и необходимы? Буду благодарен за парочку примеров.
Представьте, что у вас есть linq-запрос c where и условие во where конструируется на лету. Если бы не было деревьев выражений - то where будет выполняться на клиенте (AsEnumerable, а не AsQueryable).
Но если компилятор сумеет разобрать выражение - то он сможет сделать фильтрацию сделать прямо на сервере (см. этот ответ и кликайте на ссылки в этом ответе), а не тащить миллионы записей по сети и не фильтровать их в оперативке на клиенте. И это очень ценный кейс, потому что производительность очень сильно зависит от сети.
В чём ценность выражений: их можно разобрать на отдельные элементарные части, затем передать серверу и он их обратно соберёт, скомпилирует под себя, используя свои конструкции. Типа string.Contains из шарпа заменит на sql-ный like, условия "или" соберёт в том же порядке и т.п.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Нужно конвертировать байты MS-DOS time полученные с устройства 17 86 FF 4C в обычный читаемый форматПробовал таблицу http://www
Приведите, пожалуйста, хотя бы один реальный пример использования модификаторов virtual/override, где модификаторы virtual/ovveride оказываются действительно...
Помогите адаптировать методы для C# из Java (методы используются в расширении базового DictionaryТема здесь