【问题标题】:Return only ONE object from an EntitySet从 EntitySet 中只返回一个对象
【发布时间】:2019-04-03 18:08:03
【问题描述】:

我在 Linq 中映射了这两个表:PersonsContracts。 我还有一个全局变量 DateTime DateOfInteres

当我映射 Persons 表时,我希望有一个属性返回 single 合同:DateOfInteres 的有效合同。

基本上,Contracts 具有以下三个属性:bool IsActive、DateTime StartDate、DateTime EndDate

映射表后,我在 Person 类中定义了这个 EntitySet:

EntitySet _lct = new EntitySet(); [关联(Storage="_lct", ThisKey="Id", OtherKey="PersonId"]

通常下一步是定义一个 public IEnumerable Contracts 包含该人的所有合同,但我需要这个:

one public Contract ActiveContract 表示与以下内容的合同: (IsActive==true) && ( StartDate = 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();
    }
}

【问题讨论】:

    标签: linq-to-sql


    【解决方案1】:
    Contacts.Where(x=> [*PutYourConditionsHere*]).GroupBy(x => x.PersonID).Select(x => x.First())
    

    【讨论】:

    • 一个简短的解释和一个条件示例将使您的答案更有价值。
    • 谢谢Jitendra Gupta,但这不是idea。我不想查询 Contracts 表(如您的示例中)。我想要一个返回 ActiveContract 的 Person 类的属性。正如我所说,我拥有 EntitySet _lct 并基于它来定义 ActiveContract 属性。我认为是这样的:public Contract ActiveContract {
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 2022-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多