我有一个要求,我需要分组记录。例如,我有150条记录,我需要将它们分为5组,每组30条记录。
任何人都可以让我知道我该如何做到这一点?
提前致谢。
答案 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;
}
}