日期:2014-05-20 浏览次数:20993 次
var list = new[] { new { id=1, name="a" }, new { id=1, name="a" }, new { id=2, name="b" }, new { id=3, name="c" }, new { id=3, name="c" }, new { id=2, name="b" }, new { id=2, name="b" }, }; var result = list.GroupBy(x => x.id).Select(g => new { id = g.Key, count = g.Count(), name = g.First(s => s.id == g.Key).name }); foreach (var r in result) Console.WriteLine("id:{0} name:{1} count:{2}", r.id, r.name, r.count);
------解决方案--------------------
取group的第一个元素.
var result = list.GroupBy(x => x.id).Select(g => new { id = g.Key, count = g.Count(), item = g.First() }); foreach (var r in result) Console.WriteLine("id:{0} name:{1} count:{2}", r.id, r.item.name, r.count);
------解决方案--------------------
public class Student { public int Id { get; set; } public string Name { get; set; } } protected void Page_Load(object sender, EventArgs e) { List<Student> studentList = new List<Student>(); studentList.Add(new Student { Id = 1, Name = "1" }); studentList.Add(new Student { Id = 2, Name = "2" }); studentList.Add(new Student { Id = 2, Name = "3" }); studentList.Add(new Student { Id = 3, Name = "4" }); studentList.Add(new Student { Id = 3, Name = "5" }); studentList.Add(new Student { Id = 3, Name = "6" }); studentList.Add(new Student { Id = 4, Name = "7" }); studentList.Add(new Student { Id = 5, Name = "8" }); studentList.Add(new Student { Id = 6, Name = "9" }); studentList.Add(new Student { Id = 7, Name = "10" }); var results = studentList.Select(o => new { Id = o.Id, Name = o.Name, Count = studentList.Where(s => s.Id == o.Id).Count() }); foreach (var item in results) { Response.Write(string.Format("Id={0},Name={1},Count={2}", item.Id, item.Name, item.Count)); Response.Write("<br/>"); } }