2016-02-19 5 views
1

Итак, в моей программе у меня есть список с 1000 объектами билетов. Каждый объект имеет int ID и int SortedSet из 6 чисел. Я хочу, чтобы пользователь мог вводить шесть чисел, и для этих 6 чисел можно сравнить с 6 шестью числами в отсортированном наборе в каждом из 1000 объектов в списке. Если числа совпадают, я хочу, чтобы ID объекта был выведен. Какой был бы лучший способ добиться этого? Должен ли я ввести 6 номеров, введенных пользователем в SortedSet? Это то, о чем я думал. Если да, как бы сравнить SortedSet с каждым из 1000 SortedSets в моем списке? Я работаю над этим в течение двух дней, и моя голова обжарилась!C# Как сравнить два отсортированных набора?

надежды это сделал!

+3

Можете ли вы показать код для своих попыток? – Vikhram

+1

Вы что-то пробовали? Вы можете рассмотреть возможность записи функции сравнения для объектов, которые принимают отсортированный набор, список или любую другую вещь, которая хранит числа. – Jacobr365

+1

Возможный дубликат [C# SortedSet и равенство] (http://stackoverflow.com/questions/8604149/c-sharp-sortedsett-and-equality) – Trasiva

ответ

0

Да, давайте добавим номера пользователей в SortedSet, а затем вы можете использовать следующий метод, чтобы узнать, соответствует ли набор в вашем списке билетов установленным с пользовательской записью.

SortedSet<int>.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; 
      } 
     } 
    } 
0

Если я правильно понял вас, то вам нужно пересечение.

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); 
} 
Смежные вопросы