を得るにはTestRecords
と呼ばれ、モデルは次のようになります。GROUPBY()のは、私はデータベースのテーブルがあるとしましょう重複したレコードに
public class MyMainViewModel
{
public string Location {get;set;}
public IEnumerable<MyChildViewModel> Children {get;set;}
}
:
今
public class TestRecords
{
public int Id {get;set;}
public Date DateEntered {get;set;}
public int SecId {get;set;}
public int PhoneCallsTaken {get;set;}
}
、私はこのようになりますメインのviewmodelを持っています
そして、私の子供ビューモデル:
public class MyChildViewModel
{
public string Month { get; set; }
public string Year { get; set; }
public double TotalPhoneCalls { get; set; }
}
のは、データベースにのレコードがあるとしましょうテーブル。私は私の結果がなりたい何
TestRecords
ID | DateEntered | SecId | PhoneCallsTaken
-------------------------------------------------------------
1 8/1/2017 2 35
2 8/2/2017 2 30
5 9/1/2017 2 30
:
私はちょうどdb.TestRecords.GroupBy(x => x.SecId)
ある知っているSecId
によってグループにそれらのレコードをしたいと思います...それは私の混乱ではありません。
2
Month | Year | Total Phone Calls
------------------------------------------
August 2017 65
August 2017 65
September 2017 30
2つのレコードがであるので、それは8月の合計を繰り返している。ここで
はSecId
はここ2
2
Month | Year | PhoneCallsTaken
------------------------------------------
August 2017 65
September 2017 30
に等しい結果が、私が受けています何であるように私が期待するものですSecId
が2、月が8月のデータベース。ここで
は、私のC#のコードです:
var data = db.TestRecords.ToList();
IEnumerable<MyMainViewModel> model = data.GroupBy(x => x.Section.SectionName)
.Select(y => new MyMainViewModel()
{
Location = y.Key,
Children = y.Select(z => new MyChildViewModel()
{
Month = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(z.DateEntered.Month),
Year = z.DateEntered.Year.ToString(),
TotalPhoneCalls = y.Where(t => t.Section.SectionName == z.Section.SectionName)
.Sum(t => t.PhoneCallsTaken)
}).Distinct()
});
どのように私は、同じ月/年に入力されたレコードは別個のもので入手できますか?
何か助けていただければ幸いです。
両方のプロパティを持つ匿名オブジェクトによるグループ。 – Nkosi
サンプル入力と期待される出力を備えたhttps://stackoverflow.com/help/mcveはすばらしいでしょう。 – mjwills
返されるフィールドのみでtempオブジェクトを作成する必要があります。現在のデザインには、GroupByを実行するときにオブジェクトのすべてのプロパティが含まれています.SQLで同じステートメントを実行した場合、同様の結果が得られます – GoldBishop