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);

然而,我一直得到上述错误,谁能指出我在正确的方向?

ienumerable<string> to list<string>

我猜最后一行抛出异常。试着改变:

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:这里假设敏感应用程序的顺序无关。