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

ダニエルの提案は確かに正しいですが、私は別の方法を提案したいと思います。HashSet<string>それは、Exceptのようなセットベースの操作用に設計されたものを使用することです。

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

lines.OfType<string>().ToList()行がであるように行う必要はありませんIEnumerable<string>。次に、結果のセットをリストとして必要な場合は、を呼び出しますset.ToList()

お役に立てれば!

編集:これは、sensitiveAppsの順序は重要ではないことを前提としています。

于 2013-01-20T18:21:36.693 に答える