войти зарегистрироваться

.NETIEnumerable<T> и IQueryable<T>, в чем разница?

Уважаемые Хабровчане, решил поделиться одним не очевидным моментом использования LinqToSql, с которым столкнулся некоторое время назад. А именно, про особенности использования каскадных Linq запросов:

Работая над очередным ASP.NET MVC проектом, и проектируя уровень доступа к БД мне потребовалось проверить качество скриптов, генерируемых Framework-ом L2C.

Что имеем (упрощенный вариант модели):


class User {
  public long Id { get; set; }
  public string Name { get; set; }
  public IEnumerable<Parameter> Parameters { get; set; }
}

class Parameter {
  public long UserId { get; set; }
  public string Name { get; set; }
  public string Value { get; set; }
}

Для получения данных написан класс UserRepository:

class UserRepository: MyProjectDataContext {
  public IEnumerable GetUsers() {
    return this.Users.ToModelUsers();
  }
}

static class RepositoryHelper {
  public static IEnumerable<Model.User> ToModelUsers(this IEnumerable<DataAccess.User> users) {
    return users.Select(u => new Model.User { Id = u.Id, Name = u.Name, Parameters = u.Parameters.ToModelParameters() });
  }

  public static IEnumerable<Model.Parameter> ToModelParameters(this IEnumerable<DataAccess.Parameter> parameters) {
    return parameters.Select(u => new Model.Parameter {… });
  }
}

пишем
var users = userRepository.GetUsers().ToList();

смотрим профайлер, и с удивлением обнаруживаем что для загрузки 10 пользователей и их параметров было выполнено целых 11 запросов.

Персональные блоги Итоги первой встречи .net user group Одесса

В четверг прошла первая встреча одесской .net user group. Конечно, многие волновались, особенно организаторы и участники. Как она пройдет. Ведь ИТ жизнь Одессы не такая уже и активная по крайней мере, я надеюсь что была до этого момента. Но мы постарались сделать все возможное, чтобы она прошла на высоком уровне.

Встреча проходила в конференц-зале компьютерной академии ШАГ. Так как зарегистрировалось 65 участников пришлось проводить ее в большом конференц-зале, и он действительно был почти заполнен – пришло порядка 40 участников.

.NETРаспараллеливание задач. Случай «идеальной параллельности». Часть 1

Распараллеливание кода без зависимостей


Введение

В первой части данной статьи мы поговорим о подходах к параллельной обработке циклов в тех удачных случаях, когда между отдельными итерациями нет зависимостей, и они могут корректно выполняться параллельно. Во второй части — рассмотрим появившиеся в .NET 4.0 механизмы для управления таким распараллеливанием, и выявим тонкости работы этих механизмов.

Подкасты12й Подкаст Петербургской Группы Alt.Net


Участники


Новые фичи C# 4.0 и .Net Framework 4.0

C# 4.0
  • Опциональные и именованные параметры
  • Контракты
  • Ковариантность и контравариантность
  • dynamic

.Net 4.0
  • DLR
  • IronPython
  • PLINQ/TPL
  • Использование interop C#/C++/OpenMP в TypograFix

Дополнительно
  • Метапрограммирование в C# 5?
  • Почему никто не упомянул F#?
  • Квантовые компьютеры :)
  • Будет ли аналог Mono.Simd?
  • .Net и Embedded


Наш подкаст на RPOD и PodFM
прослушан 340 раз
НЛО прилетело и опубликовало эту надпись здесь.