ienumerable<string> to list<string>
本文关键字:gt lt string list to ienumerable | 更新日期: 2023-09-27 17:54:33
我有以下代码片段
string[] lines = objects.Split(new string[] { "'r'n", "'n" }, StringSplitOptions.None);
//convert the array into a list for easier comparison
List<string> StringtoList = lines.OfType<string>().ToList();
//get the database list here
List<string> sensitiveApps = testConnection.SelectSensitive();
//compare the 2 lists to get the difference
List<string> except = sensitiveApps.Except(StringtoList,StringComparer.OrdinalIgnoreCase);
然而,我一直得到上述错误,谁能指出我在正确的方向?
我猜最后一行抛出异常。试着改变:
List<string> except = sensitiveApps.Except(StringtoList,StringComparer.OrdinalIgnoreCase);
:
List<string> except = sensitiveApps.Except(StringtoList,StringComparer.OrdinalIgnoreCase).ToList();
此异常发生的原因是Except
将返回一个IEnumerable<string>
。
虽然Daniel的建议当然是正确的,但我想提出一个替代方案:使用HashSet<string>
,它更适合基于集合的操作,如Except。
var set = new HashSet<string>(sensitiveApps, StringComparer.OrdinalIgnoreCase);
set.ExceptWith(lines);
不需要做lines.OfType<string>().ToList()
,因为行是IEnumerable<string>
。然后,如果您确实需要结果集作为列表,只需调用set.ToList()
。
希望这对你有帮助!
Edit:这里假设敏感应用程序的顺序无关。