繁体   English   中英

将列表与另一个包含某些数据C#的列表同步

[英]Syncing List with another List containing Some data C#

使用winforms,Visual Studio 2013社区,C#。

我需要同步两个列表的顺序。 列表之一包含一个索引,另一个包含该索引中的选择。

示例:清单1包含:

[0]Data0
[1]Data1
[2]Data2
[3]Data3
[4]Data4
[5]Data5

清单2包含其中一些数据,但顺序不同:

[0]Data3
[1]Data1
[2]Data5

我需要一些方法来使订单匹配,以使清单2看起来像这样:

[0]Data1
[1]Data3
[2]Data5

示例代码:

public List<string> lista = new List<string>();
public List<string> listb = new List<string>();

public void fillListA(string mockstring)
{
    for(i=0;i<750000;i++)//just to give Idea of the number of Strings in the List
    {
        lista.add(mockstring + i.ToString());//Fill List with data
    }
}
OnClickEventHappens(string SelectedFromListA)//Mock event that fires if The user clicks on a string in ListA (As its displayed in a label on form1)
{
    if(listb.Contains(SelectedFromListA))        
    {
        listb.Remove(SelectedFromListA);
    }
    else
    {
        listb.Add(SelectedFromListA);    
    }    
}

通过执行上述操作,由于用户可以随时单击lista中的任何“字符串”,因此listb最终完全没有组织。 (因为您可以“单击” lista [5],lista [1],并且足以混合订单)

我不想每次都迭代一次(Listb显示在不同的选项卡上,因此我可以在显示之前对其进行排序,但是最好以较小的块同步而不是循环遍历整个列表)

我需要保留它们的顺序是Lista添加了“字符串”的顺序。 (目前,我是手工处理插入的)。

List<string> orderedlistb = lista.Intersect(listb).ToList()

这将遍历lista ,创建所有的元素的新列表lista也发生在listb

通常,当您执行此操作时,将需要确保要比较的对象引用相等,或者已正确覆盖了这些对象的GetHashCode()Equals(Object)

在这种情况下,由于您只使用字符串,因此无需担心。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM