1
我有一本字典,我是從一個對象,依次從兩個不同的來源獲取數據填充一個元組:更新字典項與主要
- 一個簡單的for循環,其填充鍵,和
- 和
IEnumerable
這基本上是一個查詢。
我已經設法做了第一位,但我發現做另一個有點棘手。我不知道如何使用'double tuple'的單個組件完全檢索字典中的對象。這是我做雖然:
public class DictionaryValues
{
public int Index { get; set; }
public DateTime WeekStartingDate { get; set; }
public DateTime DueDate { get; set; }
public decimal DueQuantity { get; set; }
public int MaterialID { get; set; }
}
public static Dictionary<Tuple<int, int, DateTime>, DictionaryValues>
GetIncomingStockDatesWithinForecastPeriod(IEnumerable<PurchaseOrder> purchaseOrders)
{
var incomingStockDates = new Dictionary<Tuple<int, DateTime>, DictionaryValues>();
var listDictionaryValues = new List<DictionaryValues>();
for (int i = 0; i <= 20; i++)
{
var dictValuesObj = new DictionaryValues();
var timeNow = Utilities.RemoveTimeFromDate(DateTime.Now);
dictValuesObj.Index = i;
dictValuesObj.WeekStartingDate = timeNow;
timeNow.AddDays(1);
listDictionaryValues.Add(dictValuesObj);
}
// Populate the keys
foreach (var dictValuesObj in listDictionaryValues)
{
incomingStockDates.Add(Tuple.Create(dictValuesObj.Index, dictValuesObj.WeekStartingDate), dictValuesObj);
}
// Populate other values
foreach (var purchaseOrder in purchaseOrders)
{
if (purchaseOrder.DueDate == incomingStockDates.Keys.First().Item2)
{
var dictValuesObj = new DictionaryValues();
dictValuesObj.DueDate = purchaseOrder.DueDate;
dictValuesObj.DueQuantity = purchaseOrder.Quantity;
dictValuesObj.MaterialID = purchaseOrder.MaterialID;
// Update dictionary here and if the DueDate and MaterialID
// are already there then add this Quantity to the existin one
}
}
}
所以我希望做的是簡單地檢索出字典鍵的第二分量的對象,更新,然後如果一個對象已經具有相同DueDate
和MaterialDate
存在只需將DueDate
中的新數量添加到MaterialID
的現有數量即可。
我覺得你的做法是完全錯誤的,並勢必會造成問題。如果你打算更新一個密鑰,那麼字典就不是你的數據源。當內存中保存舊密鑰的其他代碼嘗試訪問該值時會發生什麼?哦,它會得到一個'KeyNotFoundException'。我會建議重新考慮你的問題。而且,你的鑰匙應該就是這個鑰匙。不是一個具有意義的值。 – evanmcdonnal
請不要包含關於問題標題中使用的語言的信息,除非在沒有它的情況下沒有意義。標籤用於此目的。 –
@evanmcdonnal我並不打算更新密鑰,只是用它來更新值。 –