C# 如何在列表中标识附加列表

C# 如何在列表中标识附加列表,c#,listbox,C#,Listbox,我有一个与数据源绑定的列表框。在这个列表框中,我选择了多个扩展项。我持有我从列表框中选择的项目,如下面的代码 selectedreportRow = lstSelectRows.SelectedItems.Cast<FRReportRow>().ToList(); if (selectedreportRow.Count > 0) { appendReportRow=lstSelectRows.SelectedItems.Cast<FRReportRow>

我有一个与数据源绑定的列表框。在这个列表框中,我选择了多个扩展项。我持有我从列表框中选择的项目,如下面的代码

selectedreportRow = lstSelectRows.SelectedItems.Cast<FRReportRow>().ToList(); 
 if (selectedreportRow.Count > 0)
 {
   appendReportRow=lstSelectRows.SelectedItems.Cast<FRReportRow>().ToList();
   selectedreportRow.AddRange(appendReportRow);
 }
selectedreportRow=lstSelectRows.SelectedItems.Cast().ToList();
现在,我在“selectedreportRow”列表中添加一个新的列表框选择,如下代码所示

selectedreportRow = lstSelectRows.SelectedItems.Cast<FRReportRow>().ToList(); 
 if (selectedreportRow.Count > 0)
 {
   appendReportRow=lstSelectRows.SelectedItems.Cast<FRReportRow>().ToList();
   selectedreportRow.AddRange(appendReportRow);
 }
if(selectedreportRow.Count>0)
{
appendReportRow=lstSelectRows.SelectedItems.Cast().ToList();
selectedreportRow.AddRange(appendReportRow);
}
如果我举一个上面描述的例子,它就是这样

第一个列表:
45234463422342153476

带附加列表的列表:
452344634223421537665686454


我如何识别我的第一个列表中的第二个列表,直到“76”项?我一次又一次地添加列表,我还想用新选择的列表框替换上一个列表。

您可以将添加的项目存储在单独的列表中。在添加新项目之前,可以删除最后添加的项目

appendReportRow=lstSelectRows.SelectedItems.Cast<FRReportRow>().ToList();

lastAddedItems.ForEach(a => selectedreportRow.Remove(a));
lastAddedItems.Clear();
lastAddedItems.AddRange(appendReportRow);

selectedreportRow.AddRange(appendReportRow);
appendReportRow=lstSelectRows.SelectedItems.Cast().ToList();
ForEach(a=>selectedreportRow.Remove(a));
lastAddedItems.Clear();
lastAddedItems.AddRange(appendReportRow);
selectedreportRow.AddRange(appendReportRow);

您需要先实例化
lastAddedItems
,最初它应该是空的。

好吧,有很多解决方案。只需声明一个变量,该变量保存原始列表的最后一个元素。(如果数据是唯一的)如果它不只是存储最后一个元素的索引。

是否每次都附加相同的项?是..在同一个列表框中。如果列表框包含从1到10的项。第一次我选择1、2、3项,第二次我选择7、8并附加它,一次我选择4。它就像1、2、3、7、8,4.所以我想分别标识每个列表,这样我就可以从新列表中只替换最后一个列表。不,我不能清除完整列表。我只想替换最近附加的最后一个列表。