Возвращает только ОДИН объект из EntitySet

#linq-to-sql

#linq-to-sql

Вопрос:

У меня есть эти две таблицы, сопоставленные в Linq: Persons и Contracts. У меня также есть глобальная переменная DateTime DateOfInteres.

Когда я сопоставляю таблицу Persons, я хотел бы иметь свойство, возвращающее один контракт: действительный контракт на дату интереса.

В принципе, Contracts обладает, среди прочего, этими тремя свойствами: bool isActive, DateTime StartDate, DateTime EndDate.

После сопоставления таблиц я определил этот набор объектов в классе Person:

EntitySet _lct = new EntitySet(); [Ассоциация (Хранилище=»_lct», ThisKey=»Id», otherKey=»PersonID»)]

Обычно следующим шагом является определение общедоступных IEnumerable контрактов, содержащих все контракты этого пользователя, но мне нужно это:

публичный контракт ActiveContract один, означающий контракт с: (isActive==true) amp;amp; ( StartDate <= Дата интереса) amp;amp; ( EndDate >= Дата интереса)

Таким образом, при создании объектов MVVM ActiveContract и его свойства с будут доступны немедленно.

Есть идеи о том, как это можно реализовать?

Спасибо, Дэниел

====== Что-то вроде этого, я думаю:

     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) amp;amp;
            ( ct.StartDate <= DateOf Interes ) amp;amp; ( ct.EndDate >= DateOfInteres))
            .OrderByDescending(ct => ct.DataInceput)
            .FirstOrDefault();
    }
}
  

Ответ №1:

 Contacts.Where(x=> [*PutYourConditionsHere*]).GroupBy(x => x.PersonID).Select(x => x.First())
  

Комментарии:

1. Краткое объяснение и пример условия сделали бы ваш ответ намного более ценным.

2. Спасибо, Джитендра Гупта, но это не ide. Я не хочу запрашивать таблицу Contracts (как в вашем примере). Я хочу иметь свойство класса Person, возвращающее ActiveContract. Как я уже говорил, у меня есть <i> EntitySet<Contracts> _lct</ i> и на основе этого я пытаюсь определить свойство <i> ActiveContract</ i>. Я думаю, что-то вроде этого: публичный контракт ActiveContract {