У меня есть список рабочих дней
привязка к DataGrid
:
ItemsSource="{Binding Path=MyConceptItems}"
Тогда я получаюиз другого списка json и попробуйте сопоставить, используя дату:
public ObservableCollection<MyDataConcept> MyConceptItems { get; set; }
public void GetSheet(string fd, string ld){
string period = "\"" + fd + "\",\"" + ld + "\"";
string result = Task.Run(() => MyMethodAsync("getsheet", GetApiKeyAsync(), "," + period)).
GetAwaiter().GetResult();
MyObject resultparsed = new JavaScriptSerializer().Deserialize<MyObject>(result);
foreach (var item in resultparsed.result.items) {
foreach (var existingItem in MyConceptItems) {
if (existingItem.DateColumn == item.entryDate) {
existingItem.PColumn = item.pName;
existingItem.TColumn = item.aName;
existingItem.HSpend = item.formattedDuration;
}}}};
Моя проблема: когда я получаю из json два результата с одинаковой датой , тогда в MyConceptItems отображается толькоодин (последний) элемент, вероятно, перезаписан.
Пример :
MyConecptItems
:
Date | PColumn
2018-09-03 | A2
2018-09-04 | B
2018-09-05 | C2
С Json
:
Date | PName
2018-09-03 | A
2018-09-03 | A2
2018-09-04 | B
2018-09-05 | C
2018-09-05 | C2
ОБНОВЛЕНИЕ:
Я пытаюсь сделать, как показано ниже:
foreach (var item in resultparsed.result.items) {
foreach (var existingItem in MyConceptItems) {
if (existingItem.DateColumn == item.entryDate)
if (existingItem.IsExist == false){
existingItem.IsExist = true;
existingItem.ProjectColumn = item.projectName;
existingItem.TaskColumn = item.activityName;
existingItem.HoursSpend = item.formattedDuration;
}
else
{
MyConceptItems.Add(new MyDataConcept(item.entryDate, item.entryDayName,
item.projectName, item.activityName, item.formattedDuration);
}
}}
, но затем получите это сообщение:
System.InvalidOperationException:
'Collection was modified; enumeration operation may not execute.'