-4

我有一个对象列表,我想删除其中的重复项但不想删除空白对象。我正在使用 DistinctBy lambda 表达式。但它也会删除重复项。任何人都可以帮助我提供通过空白的条件并仅检查在对象中具有适当值的对象吗?

4

2 回答 2

1

您可以使用一个非常简单的扩展方法:

    public static void DistinctKeepingEmptyStrings(this List<string> list) {
        var support = new List<string>(list);
        HashSet<string> knownValues = new HashSet<string>();
        foreach (var aString in list) {
            if (aString == "" || knownValues.Add(aString)) {
                support.Add(aString);
            }
        }
        list.Clear();
        list.AddRange(support);
    }
于 2017-01-19T10:06:28.503 回答
0

例子:

在这种情况下,var list 是一个包含所有重复项(减去空字符串)的列表,然后我只需遍历重复项并将它们从 listOfValues 中删除。

List<string> listOfValues = new List<string> {"test", "test2", "", "test2", "", ""};
var list = listOfValues.GroupBy(r => r).SelectMany(grp => grp.Skip(1)).Where(r => r != "");
foreach (var aVar in list)
{
    listOfValues.Remove(aVar);
}
于 2017-01-19T10:05:29.603 回答