У меня есть две таблицы, отображенные в Linq: Персоны и Контракты .
У меня также есть глобальная переменная DateTime DateOfInteres .
Когда я отображаю таблицу Persons, я хотел бы иметь свойство, возвращающее одиночный контракт: действительный контракт в DateOfInteres.
По сути, Контракты имеют, помимо прочего, следующие три свойства: bool IsActive, DateTime StartDate, DateTime EndDate .
После сопоставления таблиц я определил этот EntitySet в классе Person:
EntitySet _lct = new EntitySet ();
[Association (Storage = "_ lct", ThisKey = "Id", OtherKey = "PersonId"]
Обычно следующим шагом является определение публичных IEnumerable Contracts , содержащих все контракты этого лица, но мне нужно это:
один публичный договор ActiveContract означающий договор с:
(IsActive == true) && (StartDate <= DateOf Interes) && (EndDate> = DateOfInteres)
Таким образом, при создании объектов MVVM ActiveContract и его свойства будут немедленно доступны.
Есть идеи, как это можно реализовать?
Спасибо,
Daniel
======
Примерно так, я думаю:
private EntitySet<Contract> _lctr = new EntitySet<Contract>();
[Association(Storage = "_lctr", ThisKey = "Id", OtherKey = "PersonId")]
public Contract ActiveContract
{
get {
return _lctr.Where(ct => (ct.IsActive == true) &&
( ct.StartDate <= DateOf Interes ) && ( ct.EndDate >= DateOfInteres))
.OrderByDescending(ct => ct.DataInceput)
.FirstOrDefault();
}
}