Возврат только ОДНОГО объекта из EntitySet - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть две таблицы, отображенные в 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();
    }
}

1 Ответ

0 голосов
/ 04 апреля 2019
Contacts.Where(x=> [*PutYourConditionsHere*]).GroupBy(x => x.PersonID).Select(x => x.First())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...