List <t> .Contains()在对象上无法正常工作

时间:2019-04-16 18:59:36

标签: c# json list

我有一个List<Nodes.Node> nodes来自JSON文件,每个对象除其他外还包含另一个List<Nodes.Item> items列表;所说的Item对象可以在整个nodes列表中重复。我想从nodes列表中创建第三个List<Nodes.Item> uniqueItems,其中仅包含每个Nodes.Item实例的单个副本。

我尝试过类似的操作,但是列表中有几个重复的Nodes.Item对象:

public static List<Nodes.Item> GetItems(List<Node> nodes)
    {
        List<Nodes.Item> uniqueItems = new List<Item>();

        foreach (var node in nodes)
        {
            foreach (var item in node.items)
            {
                if (!uniqueItems.Contains(item))
                {
                    uniqueItems.Add(item);
                }
            }
        }

        return uniqueItems;

这是两个类:

public class Node
    {
        public string type { get; set; }
        public string func { get; set; }
        public List<Item> items { get; set; }
        public int stars { get; set; }
        public List<int> time { get; set; }
        public string title { get; set; }
        public string zone { get; set; }
        public List<int> coords { get; set; }
        public string name { get; set; }
        public int uptime { get; set; }
        public int lvl { get; set; }
        public int id { get; set; }
        public double patch { get; set; }
        public string condition { get; set; }
        public string bonus { get; set; }
    }

public class Item
    {
        public string item { get; set; }
        public int icon { get; set; }
        public int id { get; set; }
        public string slot { get; set; }
        public string scrip { get; set; }
        public Reduce reduce { get; set; }
    }

我怀疑我在使用List.Contains()比较对象与对象时错了,也许LINQ是更好的方法,但是我找不到更好的解决方案。

0 个答案:

没有答案