C# 如何比较列表中的列表<;列表<;一些_类>&燃气轮机;()?
我拥有具有以下属性的类Sku: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
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() ;
}
}
}