среда, 19 мая 2010 г.

Стандартные операторы запросов LINQ. Справочник

Эту информацию я скомуниздил здесь.

Агрегатные функции

Aggregate
Применяет к последовательности пользовательский метод.

Average
Вычисляет среднее для числовой последовательности.

Count
Возвращает количество элементов в последовательности (целочисленное значение).

LongCount
Возвращает количество элементов в последовательности (значение в диапазоне LongInt).

Min
Возвращает наименьшее значение для числовой последовательности.

Max
Возвращает наибольшее значение для числовой последовательности.

Sum
Складывает члены числовой последовательности.

Конкатенация

Concat
Соединяет две последовательности в одну.

Преобразование

Cast
Преобразует элементы последовательности в элемены указанного типа.

OfType
Выбирает из элементов последовательности элемены указанного типа.

ToArray
Возвращает массив из элементов последовательности.

ToDictionary
Возвращает словарь из элементов последовательности.

ToList
Возвращает список из элементов последовательности.

ToLookup
Возвращает результаты поиска по последовательности.

ToSequence
Возвращает последовательность IEnumerable.

Элемент

DefaultIfEmpty
Создает стандартный элемент для пустой последовательности.

ElementAt
Возвращает элемент последовательности по указанному индексу.

ElementAtOrDefault
Возвращает элемент по указанному индексу или стандартный элемент (если индекс вышел за пределы диапазона).

First
Возвращает первый элемент последовательности.

FirstOrDefault
Возвращает первый элемент последовательности или стандартный элемент (если нужный элемент не найден).

Last
Возвращает последний элемент последовательности.

LastOrDefault
Возвращает последний элемент последовательности или стандартный элемент (если нужный элемент не найден).

Single
Возвращает единственный элемент последовательности.

SingleOrDefault
Возвращает единственный элемент последовательности или стандартный элемент (если нужный элемент не найден).

Равенство

SequenceEqual
Проверяет эквивалентность двух последовательностей.

Создание

Empty
Создает пустую последовательность.

Range
Создает последовательность в соответствии с заданным диапазоном.

Repeat
Создает последовательность, повторяя значение заданное количество раз.

Группировка

GroupBy
Группирует элементы последовательности указанным образом.

Присоединение

GroupJoin
Выполняет группированное соединение двух последовательностей.

Join
Выполняет внутреннее соединение двух последовательностей.

Упорядочение

OrderBy
Упорядочивает элементы последовательности по заданным значениям в порядке возрастания.

OrderByDescending
Упорядочивает элементы последовательности по заданным значениям в порядке убывания.

ThenBy
Упорядочивает элементы уже упорядоченной последовательности в порядке возрастания.

ThenByDescending
Упорядочивает элементы уже упорядоченной последовательности в порядке убывания.

Reverse
Зеркально отображает порядок расположения элементов в последовательности.

Разделение на части

Skip
Возвращает последовательность, в которой указанное число элементов пропущено.

SkipWhile
Возвращает последовательность, в которой пропущены элементы, не соответствующие указанному условию.

Take
Возвращает последовательность, в которую включается указанное число элементов.

TakeWhile
Возвращает последовательность, в которую включаются элементы, соответствующие указанному условию.

Проекция

Select
Создает проекцию части последовательности.

SelectMany
Создает проекцию части последовательности по принципу «один ко многим».

Кванторы

All
Определяет соответствие всех элементов последовательности указанным условиям.

Any
Определяет, есть ли в последовательность элементы, удовлетворяющие указанным условиям.

Contains
Определяет, есть ли в последовательности указанный элемент.

Ограничение

Where
Сортирует члены последовательности.

Настройка

Distinct
Возвращает последовательность без повторяющихся элементов.

Except
Возвращает последовательность, представляющую собой разность двух других последовательностей.

Intersect
Возвращает последовательность, представляющую собой пересечение двух других последовательностей.

Union
Возвращает последовательность, представляющую собой объединение двух других последовательностей.

вторник, 11 мая 2010 г.

XDocument в XMLDocument и наоборот

У меня в примерах
XmlDocument xmlDoc;
XDocument xDoc;

XMLDocument To XMLDocument

Самый простой, но и пожалуй самый медленный способ:
XDocument.Parse(xmlDoc.OuterXml);

Второй вариант:
using (var nodeReader = new XmlNodeReader(xmlDoc)) {
nodeReader.MoveToContent();
xDoc = XDocument.Load(nodeReader);
}

XMLDocument To XMLDocument

Очень простой способ:
xmlDoc.Load(xDoc.CreateReader());

И чего это я раньше следующим монстром пользовался?
using (MemoryStream memStr = new MemoryStream()) {
using (XmlWriter writer = XmlWriter.Create(memStr)) {
xDoc.Save(writer);
}
memStr.Position = 0;
using (XmlReader reader = XmlReader.Create(memStr)) {
xmlDoc.Load(reader);
}
}

вторник, 4 мая 2010 г.

Изменение имени проекта (сборки) в Visual Studio 2008

Вообще-то есть уже куча руководств, как можно проделать сие.

Например здесь.
http://social.msdn.microsoft.com/Forums/en-US/csharpide/thread/d4133fb7-57e1-44f2-a319-a63e7921ff0a

Но я решил запостить последовательность действий, которую выполнил я. При этом я не "поломал" проект и не потерял историю изменений для TFS. Итак VS 2008, TFS.

1. Выбрал проект в Експлорере проектов -> переименовал;
3. Свойства проекта -> Установил имя сборки и имя пространств имен. Тут же заглянул в информацию сборки и изменил название сборки (AssemblyInfo.cs);
4. В окне Quellcodeverwaltuns-Explorer переименовал папку. При этом проект закрылся и имя папки было на диске физически переименованно;
5. После того как открыл проект, студия ругнулась, что не нашла того самого проекта (или не смогла открыть). В эксплорере проектов он выделен другим цветом и пустой.
6. В свойствах проекта ранее доступное только для чтение свойство Projektordner становится доступным для изменения. Указал новый путь.

Все.