2015-03-25 4 views
1

Я начинаю в C#, и в основном я генерировал случайные числа в двух разных списках, но мне хотелось записать числа, которые находятся в обоих списках на ярлыке. Я попытался это, но он не работает:отображение совпадающих случайных чисел на ярлыке

private void matchednumbers_TextChanged(object sender, EventArgs e) 
    { 
     lbluckynumbers.Items.Contains(lbmynumbers.Items).ToString(); 

    }             
+0

Вы имеете в виду любые цифры, которые находятся в обоих списках? – BradleyDotNET

+0

нет, я хочу писать только те же номера в двух списках. – Gvep

+0

Не могли бы вы привести пример? – BradleyDotNET

ответ

0

Во-первых, вы хотите использовать Where для фильтрации одной из коллекций, условие является довольно простой, другой список содержит его! Таким образом, вы начинаете что-то вроде:

IEnumerable<int> matches = firstCollection.Where(i => secondCollection.Contains(i)); 

Обратите внимание, что этот алгоритм немного ... inefficent (O (N^2)), так как вы должны потенциально проходить через все secondCollection для каждого элемента в firstCollection. Тем не менее, он будет работать для небольших наборов.

Еще лучше было бы использовать Intersect, который делает всю эту работу за вас (и, как правило, O (2n) для загрузки!) :) (спасибо @ScottChamberlain)

IEnumerable<int> matches = firstCollection.Intersect(secondCollection); 

В обоих случаях я m, предполагая, что n примерно одинаково в обоих списках.

Теперь вам нужно преобразовать эту коллекцию в текст. String.Join здесь очень полезен, так как он будет принимать каждый элемент коллекции, вызовите ToString, чтобы преобразовать его в строку и разделить их на строку по нашему выбору! Что-то вроде:

resultLabel.Text = String.Join(",", matches); 
+0

Поскольку вы уже используете LINQ, просто используйте ['firstCollection.Intersect (secondCollection)'] (https://msdn.microsoft.com/en-us/library/bb460136 (v = vs.100) .aspx), это будет быть о 'O (n1 + n2)' (где n1 и n2 представляют каждый список), если у сопоставителя равен хороший хэш-код. –

+0

@ScottChamberlain Спасибо, я всегда забываю о заданных функциях. – BradleyDotNET

Смежные вопросы