Все сущности, созданные конструктором Linq to Sql (скомпилированные файлы DBML), являются частичными классами. Таким образом, вы можете легко добавить новый класс в ваше решение под названием «Клиенты», например так:
public partial class Customer
{
}
, в котором вы можете разместить пару общедоступных объектов
public partial class Customer
{
public Report Previous {get { /*...*/ } }
public Report Next {get { /*...*/ } }
}
Однако я бы посоветовал против этого дизайна. Я бы пошел с тем, кто итерирует отчеты, чтобы управлять тем, какой отчет следующий, а какой предыдущий. Другим лучшим вариантом было бы, чтобы Заказчик возвратил двусторонний перечислитель (мой мозг подводит меня, или я бы дал правильное имя для шаблона и ссылки), который вы могли бы использовать для Следующего или Предыдущего в коллекции. *
Если вы все еще хотите это сделать, вы можете использовать Skip () и Take () для управления текущей позицией в коллекции сущностей Reports.
private int _skip = 0;
// in Previous { get {
_skip--;
if(_skip < 0) _skip = 0;
return this.Reports.Skip(_skip).Take(1).FirstOrDefault();
// in Next { get { (not optimized)
_skip++;
if(_skip >= this.Reports.Count()) _skip--;
return this.Reports.Skip(_skip).Take(1).FirstOrDefault();