LINQ获取组中的记录

时间:2016-11-21 12:33:35

标签: c# asp.net linq

我有一个要求,我需要分组记录。例如,我有150条记录,我需要将它们分为5组,每组30条记录。

任何人都可以让我知道我该如何做到这一点?

提前致谢。

5 个答案:

答案 0 :(得分:0)

var groups = myRecords.Select((e, i) => new { Item = e, Grouping = (i / 5) }).GroupBy(e => e.Grouping);

答案 1 :(得分:0)

var g1 = records.Take(30);
var g2 = records.Skip(30).Take(30);
...

如果数字150和30只是一个例子,那么你可以轻松地将Skip(pageIndex * pageSize).Take(pageSize)放在一个循环中。

答案 2 :(得分:0)

您也可以使用MoreLinq轻松完成:

var items = list.Batch(30);

答案 3 :(得分:0)

如果没有特定的属性组,只想要它们的特定大小,那么:

static class LinqExtensions
{
    public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> list, int parts)
    {
        int i = 0;
        var splits = from item in list
                     group item by i++ % parts into part
                     select part.AsEnumerable();
        return splits;
    }
}

Thanx到Hassan Kahn

答案 4 :(得分:0)

假设您有一个列表名称EmployeeList具有不同的部门。所以你需要按员工部门对它们进行分组

       public class Employee
      {
        public string Name { get; set; }
        public string Department { get; set; }

      }
    public class EmployeeDepartMentList
    {
        public string DepartMentName {get;set; }
        public List<Employee> EmployeeList { get; set; }

    }
    public class FinalResult
    {
        public List<EmployeeDepartMentList> GetEmployeesByDepartment()
        {
            List<Employee> EmployeeList = new List<Employee>();

            var Model = EmployeeList.Select(x => x.Department).Distinct().Select(x => new EmployeeDepartMentList
            {
                DepartMentName = x,
                EmployeeList = EmployeeList.Where(y => y.Department == x).ToList()

            }).ToList();
            return Model;
        }

    }