четверг, 26 мая 2011 г.

Объявление

В связи с отсутствием товаров мной прекращена продажа вообще всего.

среда, 6 октября 2010 г.

Примеры

Большая пачка простейших примеров по использованию C# (в том числе с фичами вроде атрибутов) и LINQ(в том числе to SQL, to XML).

Здесь

пятница, 24 сентября 2010 г.

LINQ и выбор значений из списка с заданным признаком уникальности.

Предположим, у нас есть некоторый список объектов List A типа MyObject, и мы хотим сформировать другой список, содержащий уникальные значения некоторого поля объектов MyObject из A.

Пример: MyObject - некоторая запись о пользователях, содержащая поля Id, Login и Country, и мы хотим узнать, пользователи из каких стран зарегистрированы в нашей системе.

Нет ничего проще, если ваш язык идеален.
using System.Linq;
// ...
var DifferentCountries = (from userEntry in A.AsQueryable() select new {userEntry.Country}).Distinct().ToList();


За уникальность отвечает именно функция Distinct(). Если она вызывается без параметров, применяется сравнение объектов по умолчанию. Если нам нужен какой-то более мощный признак уникальности, надобно написать своё сравнение. На том же примере со странами покажу как:
  public class MyUserCountryComparer : IEqualityComparer<User>
  {
    public bool Equals(User x, User y)
    {
      return x.Country == y.Country;
    }

    // Идея в том, что эта функция должна возвращать
    // одинаковые значения для одинаковых (по мнению функции Equals())
    // объектов и разные для разных. А как - это уже ваше дело.
    // Например, так:
    public int GetHashCode(User obj)
    {
      return obj.Country.GetHashCode();
    }
  }

А применяется эта фигня так:
Distinct(new MyUserCountryComparer());

среда, 8 сентября 2010 г.

Реализация перезагрузки div через AJAX + MVC

По нажатию на кнопку стоит задача обновить содержимое div-а с id="divToProcessID", контекст подразумевает невозможность использования ништяков навроде Ajax.ActionLink  и тому подобных.


Алгоритм:
  1. Вешаем на что угодно обработчик onclick-а, в котором переходим на JS-функцию onClickBlah.
  2. Создаем Partial View, отвечающую за перерисовку этого дива.
  3. Пишем Action Method, возвращающий эту вьюшку. Пусть на него мапится путь /MyCont/DivRedraw/{параметры}
  4. пишем onClickBlah({параметры}) через 
    function onClickBlah(myID) { $.post("/MyCont/DivRedraw/", { id: myID }, putNewContent, "html");}}
  5. function putNewContent(data) { $("#neededDiv").html("data"); }
В перспективе нужно учесть, что в случае реализации, скажем, пагинации контрол, на котором висит onclick, чаще всего нужно перегружать аналогичным способом, ибо необходимо сменить параметры, с которыми вызывается onClickBlah().