我做了一個臨時應用程序來模仿一些行爲,我需要將它合併到一個Web服務中,該服務從數據庫返回數據並使用返回的數據創建動態Google圖表。將項目添加到列表<Tuple>在另一個列表內
到目前爲止,這裏是我
class Program
{
static void Main(string[] args)
{
var tupleMissingBeginning = new List<Tuple<DateTime, int>>
{
Tuple.Create(new DateTime(2017, 5, 1), 25),
Tuple.Create(new DateTime(2017, 6, 1), 35)
};
var tupleMissingMiddle = new List<Tuple<DateTime, int>>
{
Tuple.Create(new DateTime(2016, 12, 1), 25),
Tuple.Create(new DateTime(2017, 1, 1), 20),
Tuple.Create(new DateTime(2017, 2, 1), 30),
Tuple.Create(new DateTime(2017, 3, 1), 25),
Tuple.Create(new DateTime(2017, 6, 1), 35)
};
var tupleMissingEnd = new List<Tuple<DateTime, int>>
{
Tuple.Create(new DateTime(2017, 1, 1), 20),
Tuple.Create(new DateTime(2017, 2, 1), 30),
Tuple.Create(new DateTime(2017, 3, 1), 25)
};
var tupleMissingBeginningAndEnd = new List<Tuple<DateTime, int>>
{
Tuple.Create(new DateTime(2017, 3, 1), 20),
Tuple.Create(new DateTime(2017, 4, 1), 30),
Tuple.Create(new DateTime(2017, 5, 1), 25)
};
DateTime minDate = DateTime.MaxValue;
DateTime maxDate = DateTime.MinValue;
Console.WriteLine("MinDate: " + minDate);
Console.WriteLine("MaxDate: " + maxDate);
Console.WriteLine("");
List<List<Tuple<DateTime, int>>> myList = new List<List<Tuple<DateTime, int>>>();
myList.Add(tupleMissingBeginning);
myList.Add(tupleMissingMiddle);
myList.Add(tupleMissingEnd);
myList.Add(tupleMissingBeginningAndEnd);
foreach (var item in myList)
{
for (int i = 0; i < item.Count; i++)
{
Console.WriteLine(item[i] + " . . . . MinDate: " + minDate + ", MaxDate: " + maxDate);
if (item[i].Item1 < minDate)
{
minDate = item[i].Item1;
}
if (item[i].Item1 > maxDate)
{
maxDate = item[i].Item1;
}
}
Console.WriteLine();
}
Console.WriteLine();
Console.WriteLine("MinDate: " + minDate);
Console.WriteLine("MaxDate: " + maxDate);
foreach (var item in myList) // for each list<tuple<DateTime, int>> in myList,
{
while (minDate <= maxDate)
{
Console.WriteLine(minDate);
minDate = minDate.AddMonths(1);
}
}
}
}
某處,不知何故在第二圈我需要使用的minDate和的maxDate能夠檢查無論該特定列表是否存在該地點的項目。基本上,由於minDate是12/1/2016和maxDate是2017年6月1日(這些只是任意日期,可以是任何東西),我需要確保每個List<Tuple<DateTime, int>>
包含相同數量的元素,如果在該索引沒有任何內容,我可以在該月的第一天插入0。
我已經嘗試使用for循環使用原始的DateTimes作爲索引器和條件以及使用月份,但遇到了新的問題以及插入值的整個過程。
編輯:這是我目前有:
foreach (var item in myList) // for each list<tuple<DateTime, int>> in myList,
{
DateTime newDate = minDate;
while (newDate <= maxDate)
{
//Console.WriteLine(minDate);
for (int i = 0; i < item.Count; i++)
{
bool containsDate = item.Any(D => D.Item1 == newDate);
if (!containsDate)
{
item.Insert(i, new Tuple<DateTime, int>(newDate, 0));
}
}
newDate = newDate.AddMonths(1);
}
}
所以它只是存在,它增加了所有它只是不把他們的0在正確的地方。
我是如此關!我將添加到原始帖子的編輯中。非常感謝您的解決方案。 – Mkalafut
沒問題。 :-) –
亞當,再次感謝。編輯超出了我的期望。非常有用的東西! – Mkalafut