文章目录
- [C# list<T>去重](# list<T>去重)
-
- 值类型去重
-
- List<object>
-
- [object is int](#object is int)
- [object is decimal](#object is decimal)
- [object is char](#object is char)
- [object is bool](#object is bool)
- [object is string](#object is string)
- List<int>
- List<string>
- 引用类型去重
C# list去重
值类型去重
List
object is int
csharp
//object is int
List<object> ointList = new List<object>();
ointList.Add(1);
ointList.Add(1);
ointList.Add(2);
ointList = ointList.Distinct().ToList();

object is decimal
csharp
//object is decimal
List<object> odecimalList = new List<object>();
odecimalList.Add(1.25);
odecimalList.Add(1.25);
odecimalList.Add(2.25);
odecimalList = odecimalList.Distinct().ToList();

object is char
csharp
//object is char
List<object> ocharList = new List<object>();
ocharList.Add('a');
ocharList.Add('a');
ocharList.Add('b');
ocharList = ocharList.Distinct().ToList();

object is bool
csharp
//object is bool
List<object> oboolList = new List<object>();
oboolList.Add(true);
oboolList.Add(false);
oboolList.Add(true);
oboolList = oboolList.Distinct().ToList();

object is string
csharp
//object is string
List<object> osList = new List<object>();
osList.Add("1");
osList.Add("1");
osList.Add("2");
osList = osList.Distinct().ToList();

List
csharp
List<int> intList = new List<int>();
intList.Add(1111);
intList.Add(1111);
intList.Add(2222);
intList = intList.Distinct().ToList();

List
csharp
List<string> idList = new List<string>();
idList.Add("1111");
idList.Add("1111");
idList.Add("2222");
idList = idList.Distinct().ToList();

引用类型去重
csharp
private class NetworkCtrl
{
#region <属性>
/// <summary>
/// 网控对象ID
/// </summary>
public string NetCtrlId { get; set; }
/// <summary>
/// 业务对象ID
/// </summary>
public string InterID { get; set; }
/// <summary>
/// 业务操作
/// </summary>
public string OperationDesc { get; set; }
#endregion <属性>
}
csharp
List<NetworkCtrl> ncList = new List<NetworkCtrl>();
ncList.Add(new NetworkCtrl
{
InterID = "100148",
NetCtrlId = "9cc2c432-56a9-b38d-11ee-794e3a9853e2",
OperationDesc = "售后单-SH231103001-下推其它出库单"
});
ncList.Add(new NetworkCtrl
{
InterID = "100149",
NetCtrlId = "9cc2c432-56a9-b38d-11ee-794e3a9853e2",
OperationDesc = "售后单-SH231103002-下推其它出库单"
});
ncList.Add(new NetworkCtrl
{
InterID = "100148",
NetCtrlId = "9cc2c432-56a9-b38d-11ee-794e3a9853e2",
OperationDesc = "售后单-SH231103001-下推其它出库单"
});
var ncList1 = ncList.Distinct().ToList();
var ncList2 = ncList.GroupBy(x => x.InterID).Select(y => y.First()).ToList();
集合里有三条记录,其中两条重复。
使用Distinct后,还有三条,说明distinct失败
原因是,引用类型即使属性一样,引用地址是不一样的。
只能用别的方式去避免。