&月/年の組み合わせかどうか。そして、あなたは明示的にMonthYear
がDateTime
のタイプであると言っているので、私はある月に与えられた債務タイプのレコードがいくつでもあると仮定します。このように、グループ化する必要がある個々のトランザクションのテーブルがあると考えています。私が間違っていれば、あなたは明確にしてください。だからここ
が必要なクエリです:
var codedMonthlyAmounts =
from ma in MonthlyAmounts
let MonthCode =
ma.MonthYear.Year * 12
+ ma.MonthYear.Month
- 1
select new
{
MonthCode,
ma.DebtType,
ma.DebtAmount,
};
var latest =
from cma in codedMonthlyAmounts
group cma by cma.DebtType into gcmas
let DebtType = gcmas.Key
let current = gcmas
.GroupBy(gcma => gcma.MonthCode)
.OrderBy(ggcma => ggcma.Key)
.Last()
let DebtAmount = current.Sum(c => c.DebtAmount)
let monthCode = current.Key
let year = monthCode/12
let month = monthCode % 12 + 1
let MonthYear = new DateTime(year, month, 1)
select new MonthlyAmount()
{
DebtType = DebtType,
MonthYear = MonthYear,
DebtAmount = DebtAmount,
};
あなたはこれが動作するかどうかをテストしたい場合は、このコードを使用します。
var MonthlyAmounts = new List<MonthlyAmount>();
var now = DateTime.Now;
MonthlyAmounts.Add(new MonthlyAmount()
{ MonthYear = now,
DebtType = "Visa", DebtAmount = 1.2M, });
MonthlyAmounts.Add(new MonthlyAmount()
{ MonthYear = now.Subtract(TimeSpan.FromDays(2)),
DebtType = "Visa", DebtAmount = 42.0M, });
MonthlyAmounts.Add(new MonthlyAmount()
{ MonthYear = now.Subtract(TimeSpan.FromDays(31)),
DebtType = "MC", DebtAmount = 50.95M, });
MonthlyAmounts.Add(new MonthlyAmount()
{ MonthYear = now.Subtract(TimeSpan.FromDays(33)),
DebtType = "Visa", DebtAmount = 3.1415M, });
//insert above `codedMonthlyAmounts` & `latest` queries here.
var format = "{0} @ {1:MMM} {1:yyyy} = {2:#,##0.00}";
foreach (var x in latest)
{
Console.WriteLine(format,
x.DebtType,
x.MonthYear,
x.DebtAmount);
}
Console.WriteLine("Total = {0:#,##0.00}",
latest.Sum(l => l.DebtAmount));
テストコードの出力は次のとおりです。
Visa @ Dec 2010 = 43.20
MC @ Nov 2010 = 50.95
Total = 94.15
が、これはあなたが望んでいたか何であるなら、私に教えてください。
私は「最後に報告された毎月の債務の額に基づいて債務の合計額を得る」と私たちは債務額が格納されている場所を推測する必要がないならば、それはいいだろう理解していません。 – VVS
申し訳ありませんが、DB構造をもっと追加する必要があると思います。 – CraigF
私は2つのテーブルを1つは債務タイプ(IDと名前)のリストであり、もう1つは各債務(DebtId int32、 "MonthYear"日時、 "DebtAmount"小数点)の債務エントリのリストです。 – CraigF