正在将列表与另一个包含某些数据的列表同步C#
使用winforms,Visual Studio 2013社区,C# 我需要同步两个列表的顺序。其中一个列表包含索引,另一个列表包含从该索引中选择的内容 例如: 清单1包括:正在将列表与另一个包含某些数据的列表同步C#,c#,list,sorting,C#,List,Sorting,使用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 示例代码: publ
[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);
}
}
public List lista=new List();
public List listb=新列表();
公共void fillListA(字符串mockstring)
{
对于(i=0;iList orderedlistb=lista.Intersect(listb.ToList)()
这将迭代lista
,创建lista
中也出现在listb
中的所有元素的新列表
通常,在执行此操作时,您需要确保正在比较的对象是引用相等的,或者您已经正确地覆盖了这些对象的GetHashCode()
和Equals(Object)
在这种情况下,因为您只使用字符串,所以不必担心这一点。列表实际上只是字符串,Intersect修改lista还是返回列表?(例如,我可以执行listb=lista.Intersect(listb.ToList())
?@JasonBrown它返回一个新列表。如果您愿意,您确实可以将该列表的结果分配给列表B
。
List<string> orderedlistb = lista.Intersect(listb).ToList()