2013-06-07 3 views
0

Сначала я хочу знать, есть ли хотя бы один элемент в первом списке во втором списке.Как найти элемент списка в другом списке и имя элемента?

List<string> list1 = new[] { "A", "C", "F", "H", "I" }; 
List<string> list2 = new[] { "B", "D", "F", "G", "L" }; 

Я использую ниже код, чтобы сделать это -

bool isFound = list1.Intersect(list2).Any(); 

Но я хочу знать, какой элемент является то, что. Как и в случае выше, это 'F'

Каков наилучший способ для этого?

+4

list1.Intersect (песни2) дает элементы пересекающиеся. –

ответ

1

Try:

 List<string> list1 = new List<string> { "A", "C", "F", "H", "I" }; 
     List<string> list2 = new List<string> { "B", "D", "F", "G", "L" }; 
     String sel = list1.Intersect(list2).FirstOrDefault()??""; 

     Console.WriteLine(sel); 

Попробуйте мой Demo

+0

'ToString()' очень [неполично] (http: //stackoverflow.com/questions/6815187/tostring-returns-null), чтобы возвращать 'null' Я бы предложил:' list1.Intersect (list2) .FirstOrDefault() ?? "" вместо –

+0

Извините, что забыл удалить ToString(). Спасибо за это @JensKloster. – Edper

3

Вы просто использовать Intersect только:

var result = list1.Intersect(list2); 
0

Вместо переменной BOOL Вы можете взять другой список переменных, как:

List<string> list3 переменной, чтобы получить список элементов, которые forund во втором списке и назначить результат в List3

List<string> list3= list1.Intersect(list2).ToList(); 
+0

'Any' возвращает значение' bool'. вы не можете назначить его в список –

+1

ok это может быть: 'Список list3 = list1.Intersect (list2) .toList();' –

+0

Я отредактировал свой ответ –

1

вы можете использовать Enumerable.Intersect метод только, вам не нужно использовать Any в вашем случае.

Производит множество пересечений двух последовательностей.

List<string> list1 = new List<string>(){ "A", "C", "F", "H", "I" }; 
List<string> list2 = new List<string>(){ "B", "D", "F", "G", "L" }; 

var intersect = list1.Intersect(list2); 

foreach (var i in intersect) 
{ 
    Console.WriteLine(i); 
} 

выход будет;

F 

Вот DEMO.

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