Ответ 1
LINQ?
var item = sequence.Where(x => x.Age > 100)
.Select(x => new { x.FirstName, x.LastName })
.OrderBy(x => x.LastName)
.FirstOrDefault();
Наличие инициализаторов коллекции в С# и разрешено определить свойства класса без вызова конструктора, есть ли смысл использовать метод Chaining в С#? Я не вижу ничего. Может быть, я что-то пропустил?
Спасибо
LINQ?
var item = sequence.Where(x => x.Age > 100)
.Select(x => new { x.FirstName, x.LastName })
.OrderBy(x => x.LastName)
.FirstOrDefault();
Обычно используется плавный интерфейс
EDIT: в ответ на вопросы в комментариях инициализаторы свойств/коллекций довольно ограничены тем, что вы можете устанавливать только предложения или вызывать метод Add в коллекции, тогда как вызовы методов более гибкие, так как они могут принимать множественные аргументы.
Свободный интерфейс - это всего лишь одно конкретное использование цепочки методов для создания более читаемого API, часто для разработчиков объектов.
Кроме того, в стороне, что статья MSDN довольно вводит в заблуждение, поскольку инициализаторы объектов не позволяют обойти конструктор, это просто, что в примере класс StudentName
имеет конструктор по умолчанию, который ничего не делает.
CuttingEdge.Conditions - хороший пример того, почему удобство метода удобнее?
public void GetData(int? id)
{
// Check all preconditions:
Condition.Requires(id)
.IsNotNull()
.IsInRange(1, 999)
.IsNotEqualTo(128);
}