我在Linq中映射了以下两个表:人和合同。 我还有一个全局变量 DateTime DateOfInteres 。
当我映射Persons表时,我希望有一个属性返回一个单个合同:DateOfInteres上的有效合同。
合同基本上具有以下三个属性: bool IsActive,DateTime StartDate,DateTime EndDate 。
映射表后,我在Person类中定义了这个EntitySet:
EntitySet _lct = new EntitySet(); [Association(Storage =“ _ lct”,ThisKey =“ Id”,OtherKey =“ PersonId”]
通常,下一步是定义包含该人的所有合同的公共IEnumerable合同,但我需要这样做:
一个 公共合同ActiveContract 表示具有以下内容的合同: (IsActive == true)&&(StartDate <= DateOf Interes)&&(EndDate> = DateOfInteres)
因此,在创建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) &&
( ct.StartDate <= DateOf Interes ) && ( ct.EndDate >= DateOfInteres))
.OrderByDescending(ct => ct.DataInceput)
.FirstOrDefault();
}
}
答案 0 :(得分:0)
Contacts.Where(x=> [*PutYourConditionsHere*]).GroupBy(x => x.PersonID).Select(x => x.First())