#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 {