2015-07-07 4 views
-1

У меня есть два списка слов.Проверка наличия некоторых значений списка в другом списке

List<string> mainList = new List<string> {"blue", "green", "mother", "black", "gray"}; 
    List<string> checkList = new List<string> {"mother", "green", "father", "black", "gray"}; 

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

Random rand = new Random(); 
    string iGenerated = mainList[rand.Next(mainList.Count)]; 

и затем проверить, если эта строка также относится ко второму списку. Я не уверен, как именно я могу это сделать. Я подумал, что это так ... Правильно?

if checkList.Contains(iGenerated) bool strInArray = true; 
else bool strInArray = false; 
+1

'Я не знаю, как именно я должен сделать it.' я это знаю. Попробуйте написать код. если он не работает, задайте конкретный вопрос, показывающий, что вы пробовали до сих пор. – EZI

+0

Вам нужно будет перебрать второй список и сравнить каждое значение во втором списке с именем 'iGenerated'. LINQ предоставляет некоторые методы расширения для этого, но это основная операция, которую вы должны выполнить. –

+0

@EZI Спасибо. Готово. –

ответ

1

Что вы пытаетесь сделать, может быть достигнуто с помощью Contains() из List

using System; 
using System.Collections.Generic; 

public class Program 
{ 
    public static void Main() 
    { 
     List<string> mainList = new List<string> { "blue", "green", "mother", "black", "gray" }; 
     List<string> checkList = new List<string> { "mother", "green", "father", "black", "gray" }; 

     Random r = new Random(); 

     // Run five random tests 
     for (int i = 0; i < 5; i++) 
     { 
      string mainListItem = mainList[r.Next(0, mainList.Count)]; 
      Console.WriteLine(checkList.Contains(mainListItem) 
           ? "{0} found in checkList" 
           : "{0} not found in checkList", mainListItem); 
     } 
    } 
} 

Результаты:

green found in checkList 
mother found in checkList 
gray found in checkList 
blue not found in checkList 
mother found in checkList 

Demo

+0

Спасибо! Shar1er –

1

Вот моя программа в консольное приложение:

static void Main(string[] args) 
 
     { 
 

 
      List<string> color1 = new List<string> { "blue", "green", "mother", "black", "gray" }; 
 
      List<string> color2 = new List<string> { "mother", "green", "father", "black", "gray" }; 
 

 
      string rd = GetRandom(color1); 
 

 
      if (color2.Contains(rd)) 
 
      { 
 
       // do something 
 
       Console.WriteLine(rd); 
 
      } 
 
      else 
 
      { 
 
       // do another work 
 
      }   
 

 
      Console.Read(); 
 
     } 
 
     static string GetRandom(List<string> color) 
 
     { 
 
      var arr = color.ToArray(); 
 
      Random rd=new Random(); 
 

 
      int n = rd.Next(arr.Length); 
 

 
      return arr[n]; 
 
     }

+0

Большое спасибо. Я понимаю эту логику. Но есть ли способ сделать то же самое, не перестраивая список в массив? –