2つのリストを存在するデータと存在しないデータでマージしようとしています。問題2つのリストをマージする
基本的には、startDateとendDateを渡すときに月間を抽出してリストを作成し、データベースを呼び出してデータを取得して最初のリストにマージする必要があります。私はこれをうまくやった。しかし、私はデータを含む月だけではなく、リスト全体を返す必要があります。
startDate is 5-1-2016
endate is 7-14-2016
コード:
//Create the empty list
if (dateRange == "m")
{
List<DataObject> MonthList = new List<DataObject>();
for (DateTime dt = startDate; dt <= endDate; dt = dt.AddMonths(1))
{
var insertDate = new DateTime(dt.Year, dt.Month, dt.Day);
MonthList.Add(new DataObject
{
data_date = insertDate,
dataParam1 = 0,
dataParam2 = 0,
dataParam3 = 0,
dataParam4 = 0,
dataParam5 = 0
});
}
//Get the Data
List<DataObject> value =
dctx.QueryStoredProcedure<DataObject>("sproc",
parameters).ToList();
//マージリスト
var result = value.Join(MonthList, arg => arg.data_date, arg => arg.data_date,
(x, y) =>
new DataObject
{
data_date = y.data_date,
dataParam1 = x.Calories,
dataParam2 = x.ActiveMinutes,
dataParam3 = x.Duration,
dataParam4 = x.Distance,
dataParam5 = x.Steps
}).ToList();
期待される結果:
"data_date": "2016-05-01T00:00:00",
"dataParam1": 195007,
"dataParam2": 163069,
"dataParam3": 0,
"dataParam4": 0,
"dataParam5": 951087
"data_date": "2016-06-01T00:00:00",
"dataParam1": 416647,
"dataParam2": 265536,
"dataParam3": 0,
"dataParam4": 0,
"dataParam5": 1650185
"data_date": "2016-07-01T00:00:00",
"dataParam1": 0,
"dataParam2": 0,
"dataParam3": 0,
"dataParam4": 0,
"dataParam5": 0
実績:(2016年7月1日が欠落しています)
"data_date": "2016-05-01T00:00:00",
"dataParam1": 195007,
"dataParam2": 163069,
"dataParam3": 0,
"dataParam4": 0,
"dataParam5": 951087
"data_date": "2016-06-01T00:00:00",
"dataParam1": 416647,
"dataParam2": 265536,
"dataParam3": 0,
"dataParam4": 0,
"dataParam5": 1650185
私はそれがマージされていると確信していますが、GroupJoinを実行しようとしましたが、y値を取得してオブジェクトプロパティを設定できませんでした。私は明らかに何か間違っている。
私の答えはあなたの質問を解決しましたか?それがあった場合は受け入れてください。そうでない場合は何を手伝ってください。ありがとう。 – ChiralMichael