Как я могу получить доступ к полю PayTime, которое находится внутри «платного» класса в Linq - PullRequest
0 голосов
/ 24 октября 2018

Существует поле с именем FactorStateBase, которое мы реализовали с помощью шаблонной стратегии.Это поле имеет значение по умолчанию PendingFactorState.Мы хотим получить доступ ко всем факторам, которые в оплаченном состоянии и их даты попадают в определенный промежуток времени.Этот интервал времени оплаты 'new'ed внутри PaidFactorState, когда платеж фактически выполнен, и новый класс назначен полю состояния.

Мой вопрос: как я могу получить доступ к полю даты платежа, которое находится внутри класса "paid" в Linq?

Спасибо,

   public class Factor : AggregateRoot<long>, IHasCreationTime
{

    public Factor(long id, long orderId, decimal price)
    {
        Id = id;
        Price = price;
        OrderId = orderId;
       FactorStateBase = new PendingFactorState(Guid.NewGuid());
    }
    public long OrderId { get; private set; }
    public decimal Price { get; private set; }
    public virtual FactorStateBase FactorStateBase { get; private set; }
    public void PayFactor(Guid id, string messageNumber, Guid paymentId, string transactionCode)
    {
      FactorStateBase = new PaidFactorState(id, messageNumber, paymentId, transactionCode);
    }

}
public abstract class FactorStateBase : Entity
{
    protected FactorStateBase(Guid id)
    {
        Id = id;
    }
}
public class PaidFactorState : FactorStateBase
{
    public PaidFactorState(Guid id, string messageNumber, Guid paymentId, string transactionCode) : base(id)
    {
        PayTime = DateTime.Now;
        MessageNumber = messageNumber;
        PaymentId = paymentId;
        TransactionCode = transactionCode;
    }
    public DateTime PayTime { get; private set; }
    public string MessageNumber { get; private set; }
    public Guid PaymentId { get; private set; }
    public string TransactionCode { get; private set; }

}

1 Ответ

0 голосов
/ 04 декабря 2018
factors=_repository.AsQueryable.Where(p=>p.FactorStateBase is PaidFactorState && p.PayDate > = yourdate)

вы можете использовать is для этого кода, а для платных полей вы используете поле PendingFactorState

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...