Искать элемент в списке в другом списке в C# - PullRequest
0 голосов
/ 15 февраля 2020

Я хочу сопоставить любые строковые элементы в списке с элементами подстроки в другом списке, затем поместить подстроку и повторение в словарь без для l oop, поскольку список подстрок содержит 24345000 ячеек.

 string[] folders = Directory.GetDirectories(@"..\Raw Data", "*");
 Dictionary<string, int> freq = new Dictionary<string, int>();
 var letters= File.ReadAllLines(@"..\letters.txt").ToList();
 foreach (string folder in folders)
        {
            string name_folder = Path.GetFileName(folder);

            string[] N_F = Directory.GetFiles(@"..\items\" + folder, "*.txt");
            foreach (string f in N_F)
            {
                List<string> s = File.ReadAllText(f).Split(' ').ToList();
                s.RemoveAll(string.IsNullOrWhiteSpace);
                foreach(string t in letters)
                    if(s.Contains(t))
                if (freq.ContainsKey(t))
                        freq[t]++;
                    else
                        freq[t] = 1;
            }
}

1 Ответ

0 голосов
/ 15 февраля 2020

Вы ищете способ поиска по количеству появлений слов из списка в другом списке.

// Sample Data 
var letters = new string[] { "Apple", "Orange", "Mango", "Cherry" };
var masterList = new string[] 
                { "Apple", "Tea", "Mango", "Apple", "Wheat", "Mango",
                  "Bread", "Orange", "Mango", "Apple", "Orange", "Mango",
                  "Apple", "Bread", "Mango", "Apple", "Bread", "Tea"
                }; 

Вы можете попробовать:

var freq = words.Select(w => new { Word = w, Count = masterList.Count(m => m == w) })
                              .ToList();

freq будет содержать :

Word = Apple    Count = 5
Word = Orange    Count = 2
Word = Mango    Count = 5
Word = Cherry    Count = 0
...