C#如何比较两个排序集?
所以在我的程序中,我有一个包含1000个票证对象的列表。每个对象都有一个int-ID和一个包含6个数字的int-SortedSet。我希望用户能够输入6个数字,并将这6个数字与列表中1000个对象中每个对象的排序集中的6个数字进行比较。如果数字匹配,我希望输出对象的ID。实现这一目标的最佳方式是什么?我是否应该将用户输入的6个数字也输入到SortedSet中?这就是我想做的。如果是,我将如何将分拣集与列表中的1000个分拣集进行比较?我已经做了两天了,我的头都炸了,哈哈C#如何比较两个排序集?,c#,list,collections,set,C#,List,Collections,Set,所以在我的程序中,我有一个包含1000个票证对象的列表。每个对象都有一个int-ID和一个包含6个数字的int-SortedSet。我希望用户能够输入6个数字,并将这6个数字与列表中1000个对象中每个对象的排序集中的6个数字进行比较。如果数字匹配,我希望输出对象的ID。实现这一目标的最佳方式是什么?我是否应该将用户输入的6个数字也输入到SortedSet中?这就是我想做的。如果是,我将如何将分拣集与列表中的1000个分拣集进行比较?我已经做了两天了,我的头都炸了,哈哈 希望这是有意义的 是的,
希望这是有意义的 是的,请继续,将用户编号也放入SortedSet,然后您可以使用以下方法查看您的票证列表中的集合是否与用户输入的集合相等
SortedSet<int>.CreateSetComparer().Equals(userSet, objectSet);
SortedSet.CreateSetComparer().Equals(userSet,objectSet);
要获得ID列表,可以执行以下操作
IEnumerable<int> GetMatchingSetIDs(SortedSet<int> userSet)
{
IEqualityComparer<SortedSet<int>> setComparer = SortedSet<int>.CreateSetComparer();
foreach (Ticket ticket in tickets) //Where ticket is your ticket class with the sortedsets and tickets is a List of tickets.
{
if (setComparer.Equals(ticket.Set, userSet))
{
yield return ticket.ID;
}
}
}
IEnumerable GetMatchingSetId(SortedSet用户集)
{
IEqualityComparer setComparer=SortedSet.CreateSetComparer();
foreach(Ticket-Ticket-in-tickets)//其中Ticket是您的带有分类数据集的票务类别,tickets是一个票务列表。
{
if(setComparer.Equals(ticket.Set,userSet))
{
生成回程票.ID;
}
}
}
如果我理解正确,那么你需要的是一个十字路口
int[] array1 = { 1, 2, 3 };
int[] array2 = { 2, 3, 4 };
// Call Intersect extension method.
var intersect = array1.Intersect(array2);
// Write intersection to screen.
foreach (int value in intersect)
{
Console.WriteLine(value);
}
你能为你的尝试显示代码吗?你试过什么吗?您可以考虑为排序对象、列表或任何其他存储数字的对象编写比较函数。