두 개의 목록을 존재하는 데이터와 존재하지 않는 데이터로 병합하려고 시도하고 있습니다.문제 두 목록 병합
기본적으로 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