Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何比较列表中的列表<;列表<;一些_类>&燃气轮机;()?_C#_List - Fatal编程技术网

C# 如何比较列表中的列表<;列表<;一些_类>&燃气轮机;()?

C# 如何比较列表中的列表<;列表<;一些_类>&燃气轮机;()?,c#,list,C#,List,我拥有具有以下属性的类Sku: class Sku { private string term_name; private string sku_name; private int sku_qty; public string Term_name { get { return term_name; } set { term_name = value; } } public string Sku_name

我拥有具有以下属性的类Sku:

class Sku
{
    private string term_name;
    private string sku_name;
    private int sku_qty;

    public string Term_name
    {
        get { return term_name; }
        set { term_name = value; }
    }
    public string Sku_name
    {
        get { return sku_name; }
        set { sku_name = value; }
    }
    public int Sku_qty
    {
        get { return sku_qty; }
        set { sku_qty = value; }
    }
}
所以我创建了
列表

例如,我想将
SplitChosenCopy
中的每个列表与另一个列表进行比较,并获得它们的索引:

foreach (List<Sku> sku in SplitChosenCopy)
{
    //compare list sku with lists in SplitChosenCopy
}
foreach(在SplitChosenCopy中列出sku)
{
//将列表sku与SplitChosenCopy中的列表进行比较
}
尝试下面的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Xml;
using System.Xml.Serialization;
using System.IO;


namespace ConsoleApplication23
{
    class Program
    {
        static void Main(string[] args)
        {
            List<List<Sku>> SplitChosenCopy = new List<List<Sku>>();

            List<Sku> skus = new List<Sku>();
            skus.Add(new Sku { Term_name = "301", Sku_name = "sku2", Sku_qty = 30 });
            skus.Add(new Sku { Term_name = "302", Sku_name = "sku4", Sku_qty = 3 });

            List<Sku> skus2 = new List<Sku>();
            skus2.Add(new Sku { Term_name = "301", Sku_name = "sku7", Sku_qty = 30 });
            skus2.Add(new Sku { Term_name = "302", Sku_name = "sku4", Sku_qty = 3 });

            List<Sku> skus3 = new List<Sku>();
            skus3.Add(new Sku { Term_name = "301", Sku_name = "sku2", Sku_qty = 9 });
            skus3.Add(new Sku { Term_name = "302", Sku_name = "sku4", Sku_qty = 8 });

            SplitChosenCopy.Add(skus);
            SplitChosenCopy.Add(skus2);
            SplitChosenCopy.Add(skus3);

            var results = SplitChosenCopy.GroupBy(x => x).ToList();

        }
    }
    class Sku : IEqualityComparer<Sku>
    {
        private string term_name;
        private string sku_name;
        private int sku_qty;

        public string Term_name
        {
            get { return term_name; }
            set { term_name = value; }
        }
        public string Sku_name
        {
            get { return sku_name; }
            set { sku_name = value; }
        }
        public int Sku_qty
        {
            get { return sku_qty; }
            set { sku_qty = value; }
        }

        bool IEqualityComparer<Sku>.Equals(Sku  a, Sku  b)
        {

            return  a.term_name.Equals(b.term_name) && a.sku_name.Equals(b.sku_name) && a.sku_qty.Equals(b.sku_qty);

        }
        int IEqualityComparer<Sku>.GetHashCode(Sku obj)
        {
            if (Object.ReferenceEquals(obj, null))
                return 0;

            return (obj.term_name + "^" +  obj.sku_name + "^" + obj.sku_qty.ToString()).GetHashCode() ;
        }
    }



}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用系统数据;
使用System.Xml;
使用System.Xml.Serialization;
使用System.IO;
命名空间控制台应用程序23
{
班级计划
{
静态void Main(字符串[]参数)
{
List SplitChosenCopy=新列表();
列表SKU=新列表();
添加(新Sku{Term_name=“301”,Sku name=“sku2”,Sku数量=30});
添加(新Sku{Term_name=“302”,Sku name=“sku4”,Sku数量=3});
列表skus2=新列表();
添加(新Sku{Term_name=“301”,Sku name=“sku7”,Sku数量=30});
添加(新Sku{Term_name=“302”,Sku name=“sku4”,Sku数量=3});
List skus3=新列表();
skus3.添加(新Sku{Term_name=“301”,Sku name=“sku2”,Sku数量=9});
skus3.添加(新Sku{Term_name=“302”,Sku_name=“sku4”,Sku数量=8});
SplitChosenCopy.Add(SKU);
SplitChosenCopy.Add(skus2);
SplitChosenCopy.Add(skus3);
var results=SplitChosenCopy.GroupBy(x=>x.ToList();
}
}
类别Sku:IEqualityComparer
{
私有字符串项_名称;
私有字符串sku_名称;
私人库存单位数量;
公共字符串术语\u名称
{
获取{return term_name;}
设置{term_name=value;}
}
公共字符串Sku_名称
{
获取{返回sku_name;}
设置{sku_name=value;}
}
公共库存单位数量
{
获取{返回sku_数量;}
设置{sku_数量=值;}
}
bool IEqualityComparer.Equals(Sku a、Sku b)
{
返回a.term_name.Equals(b.term_name)&&a.sku_name.Equals(b.sku name)&&a.sku数量Equals(b.sku数量);
}
int IEqualityComparer.GetHashCode(Sku obj)
{
if(Object.ReferenceEquals(obj,null))
返回0;
返回(obj.term_name+“^”+obj.sku_name+“^”+obj.sku_数量ToString()).GetHashCode();
}
}
}

是否要查找重复项?是的,我要查找重复项列表中的顺序无关紧要?我需要知道重复列表的索引。顺序无关紧要
foreach (List<Sku> sku in SplitChosenCopy)
{
    //compare list sku with lists in SplitChosenCopy
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Xml;
using System.Xml.Serialization;
using System.IO;


namespace ConsoleApplication23
{
    class Program
    {
        static void Main(string[] args)
        {
            List<List<Sku>> SplitChosenCopy = new List<List<Sku>>();

            List<Sku> skus = new List<Sku>();
            skus.Add(new Sku { Term_name = "301", Sku_name = "sku2", Sku_qty = 30 });
            skus.Add(new Sku { Term_name = "302", Sku_name = "sku4", Sku_qty = 3 });

            List<Sku> skus2 = new List<Sku>();
            skus2.Add(new Sku { Term_name = "301", Sku_name = "sku7", Sku_qty = 30 });
            skus2.Add(new Sku { Term_name = "302", Sku_name = "sku4", Sku_qty = 3 });

            List<Sku> skus3 = new List<Sku>();
            skus3.Add(new Sku { Term_name = "301", Sku_name = "sku2", Sku_qty = 9 });
            skus3.Add(new Sku { Term_name = "302", Sku_name = "sku4", Sku_qty = 8 });

            SplitChosenCopy.Add(skus);
            SplitChosenCopy.Add(skus2);
            SplitChosenCopy.Add(skus3);

            var results = SplitChosenCopy.GroupBy(x => x).ToList();

        }
    }
    class Sku : IEqualityComparer<Sku>
    {
        private string term_name;
        private string sku_name;
        private int sku_qty;

        public string Term_name
        {
            get { return term_name; }
            set { term_name = value; }
        }
        public string Sku_name
        {
            get { return sku_name; }
            set { sku_name = value; }
        }
        public int Sku_qty
        {
            get { return sku_qty; }
            set { sku_qty = value; }
        }

        bool IEqualityComparer<Sku>.Equals(Sku  a, Sku  b)
        {

            return  a.term_name.Equals(b.term_name) && a.sku_name.Equals(b.sku_name) && a.sku_qty.Equals(b.sku_qty);

        }
        int IEqualityComparer<Sku>.GetHashCode(Sku obj)
        {
            if (Object.ReferenceEquals(obj, null))
                return 0;

            return (obj.term_name + "^" +  obj.sku_name + "^" + obj.sku_qty.ToString()).GetHashCode() ;
        }
    }



}