有一个字典,例如
IDictionary<string, List<Model>>
有一个模型
public class Model
{
public string Name { get; set;}
public byte[] Data { get; set;}
}
怎样才能消除整个Dictionary中Name的重复值呢?过滤现有字典。必须删除重复值。那些。如果在列表中的键“Key1”和键“Key2”中有一个具有相同值的名称,则有必要为该键排除该值(哪个都无关紧要)
测试数据
{"key1", {"Name1", <data>}, {"Name2", <data>}, {"Name3", <data>}}
{"key2", {"Name4", <data>}, {"Name2", <data>}, {"Name5", <data>}}
结果
{"key1", {"Name1", <data>}, {"Name2", <data>}, {"Name3", <data>}}
{"key2", {"Name4", <data>}, {"Name5", <data>}}
或者
{"key1", {"Name1", <data>}, {"Name3", <data>}}
{"key2", {"Name4", <data>}, {"Name2", <data>}, {"Name5", <data>}}
作为 Ruslan Artamonov 答案的发展。为了不只是为了整理而复制列表,您可以使用 RemoveAll 方法:
这种方式在长列表上更快(该答案相对于列表的长度具有二次复杂性 - 这个具有线性复杂性)。
但是,如果不需要长列表,为了代码可读性,最好使用简单的嵌套循环。