Linq 去重操作三种方式
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
List<_model> _list = new List<_model>();
_list.Add(new _model() { _sum = 1, _id = 1, _int = 1 });
_list.Add(new _model() { _sum = 3, _id = 1, _int = 2 });
_list.Add(new _model() { _sum = 7, _id = 2, _int = 1 });
_list.Add(new _model() { _sum = 2, _id = 3, _int = 1 });
_list.Add(new _model() { _sum = 4, _id = 3, _int = 2 });
_list.Add(new _model() { _sum = 9, _id = 3, _int = 3 });
//返回列表
var _list1 = _list.GroupBy(i => i._id).Select(i => i.OrderByDescending(i => i._int).First()).ToList();
foreach (var item in _list1)
{
Console.WriteLine(item._sum);
Console.WriteLine(item._id);
Console.WriteLine(item._int);
}
//返回求和(单个条件排序)
var _list2 = _list.GroupBy(i => i._id).Select(i => new { i.Key, _sum = i.Sum(o=>o._sum) }).ToList();
foreach (var item in _list2)
{
Console.WriteLine(item.Key);
Console.WriteLine(item._sum);
}
//返回求和(多个条件排序)
var _list3 = _list.GroupBy(i => new { i._id,i._int}).Select(i => new { i.Key, _sum = i.Sum(o => o._sum) }).ToList();
foreach (var item in _list3)
{
Console.WriteLine(item.Key._id);
Console.WriteLine(item.Key._int);
Console.WriteLine(item._sum);
}
//===========================================================================
Console.ReadKey();
}
public class _model
{
public int _sum { get; set; }
public int _id { get; set; }
public int _int { get; set; }
}
}