で通貨換算複雑さと優れた請求書を取得し、私はそれが様々な性質を持っている、エンティティはInvoice.cs
と呼ばれる持っているが、ここでは質問に対する心配なものです:私のEntity FrameworkのアプリケーションでLINQ
public class Invoice : IEntity
{
public int Id { get; set; }
public decimal Amount { get; set; }
public DateTime Date { get; set; }
public int OrderId { get; set; }
public virtual ICollection<Payment> Payments { get; set; }
}
未処理のすべての請求書の一覧を取得するためにデータベースにクエリを実行しようとしています。請求書に対して支払いの合計請求書金額より小さい
場合は、請求書が優れです:優れた請求書は次のとおりです。
請求書は現在、次のようになります私のLINQクエリに優れているか、いない場合、私はワークアウトにこだわっている:
var outstandingInvoices = from inv in _context.Invoices
where !inv.IsDeleted && inv.Date >= startDate && inv.Date <= endDate
select inv;
startDate
とendDate
は、結果をフィルタリングするために渡されたパラメータです。
これと別の複雑さは、支払いの仕方に関係します。支払いはRMB(中国通貨)またはGBP(英国通貨)で行うことができ、私が生成しているレポートでは、すべてをGBPとして表示します。
だから私は何とかあまりにもこのロジックを追加する必要があります。
// loop through payments for each invoice, and add payment
// amount to a local variable called total
if (payment.Currency == Currency.Gbp)
{
total += payment.Amount;
} else
{
total += payment.Amount/(decimal)payment.ConversionRate;
}
Payment.cs
エンティティが懸念されるこれら2つのプロパティがあります
public class PaymentViewModel
{
public int Id { get; set; }
[Required]
public decimal Amount { get; set; }
[Required]
[Display(Name = "Payment Currency")]
public Currency Currency { get; set; }
[Display(Name = "Conversion Rate")]
public float ConversionRate { get; set; }
}
請求額があまりにもGBPである、またはそれは任意の通貨になることができますか? –
Gbpにあるレコードの場合、 'CoversionRate' 1ですか? –
Yep @RobertMcKee – Ciwan