dea*_*_Y7 4 c# compare list .net-4.5
我想比较两个列表并将有效的单词放入新列表中.
var words = new List<string>();
var badWords = new List<string>();
//this is just an example list. actual list does contain 700 records
words.Add("Apple");
words.Add("Moron");
words.Add("Seafood");
words.Add("Cars");
words.Add("Chicken");
words.Add("Twat");
words.Add("Watch");
words.Add("Android");
words.Add("c-sharp");
words.Add("Fool");
badWords.Add("Idiot");
badWords.Add("Retarded");
badWords.Add("Twat");
badWords.Add("Fool");
badWords.Add("Moron");
Run Code Online (Sandbox Code Playgroud)
我正在寻找最有效的方法来比较列表并将所有"好"的单词放入新的列表中.finalList不应包含"Moron","Twat"和"Fool".
var finalList = new List<string>();
Run Code Online (Sandbox Code Playgroud)
或者是否没有必要创建新的列表?我很高兴听到你的想法!
先感谢您
Kon*_*ran 10
使用EnumerableExcept函数存储在System.Linq命名空间中
finalList = words.Except(badWords).ToList();
Run Code Online (Sandbox Code Playgroud)
最有效的方法来节省您的时间,也是最快的方法,因为Except实现使用Set,这是快速的
List<string> cleanList = words.Except(badWords).ToList();
Run Code Online (Sandbox Code Playgroud)
这是有效的,因为Except使用基于集合的方法.
更有效的方法是避免将"坏"字添加到第一个列表中.例如,通过使用HashSet<string>带不区分大小写的比较器:
var badWords = new HashSet<string>(StringComparer.InvariantCultureIgnoreCase){ "Idiot", "Retarded", "Twat", "Fool", "Moron" };
string word = "idiot";
if (!badWords.Contains(word))
words.Add(word);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1333 次 |
| 最近记录: |