0

我有以下代码片段

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

但是,我不断收到上述错误,有人能指出我正确的方向吗?

4

2 回答 2

4

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

List<string> except = sensitiveApps.Except(StringtoList,StringComparer.OrdinalIgnoreCase);

到:

List<string> except = sensitiveApps.Except(StringtoList,StringComparer.OrdinalIgnoreCase).ToList();

此异常正在发生,因为Except将返回一个IEnumerable<string>.

于 2013-01-20T18:00:13.567 回答
1

虽然 Daniel 的建议肯定是正确的,但我想提出一个替代方案:使用HashSet<string>它更好地设计用于除之外的基于集合的操作。

var set = new HashSet<string>(sensitiveApps, StringComparer.OrdinalIgnoreCase);
set.ExceptWith(lines);

没有必要做lines.OfType<string>().ToList()as lines is IEnumerable<string>。然后,如果您确实需要将结果集作为列表,只需调用set.ToList().

希望这可以帮助!

编辑:这假设sensitiveApps 的顺序无关紧要。

于 2013-01-20T18:21:36.693 回答