C# 当类型与linq相同时,选择父级和子级
我有一个这样的物体C# 当类型与linq相同时,选择父级和子级,c#,linq,C#,Linq,我有一个这样的物体 public class Employee { public int EmployeeId { get; set; } public string Name { get; set; } public IList<Employee> Employees{ get; set; } } Employee emp = getEmployeeFromService(); var allEmps = new List<Employee>
public class Employee
{
public int EmployeeId { get; set; }
public string Name { get; set; }
public IList<Employee> Employees{ get; set; }
}
Employee emp = getEmployeeFromService();
var allEmps = new List<Employee>();
allEmps.Add(emp);
allEmps.AddRange(emp.Employees);
var pagedEmployees= (from e in allEmps select e).Skip(offset).Take(pageSize);
公共类员工
{
public int EmployeeId{get;set;}
公共字符串名称{get;set;}
公共IList雇员{get;set;}
}
我要做的是选择所有员工,以及单个集合中的父员工。我希望将父项作为集合中的第一项进行分页。现在我正在做这样的事情
public class Employee
{
public int EmployeeId { get; set; }
public string Name { get; set; }
public IList<Employee> Employees{ get; set; }
}
Employee emp = getEmployeeFromService();
var allEmps = new List<Employee>();
allEmps.Add(emp);
allEmps.AddRange(emp.Employees);
var pagedEmployees= (from e in allEmps select e).Skip(offset).Take(pageSize);
Employee emp=getEmployeeFromService();
var allEmps=新列表();
添加(emp);
allEmps.AddRange(emp.Employees);
var pagedeEmployees=(从allEmps中的e选择e)。跳过(偏移量)。获取(页面大小);
使用单个linq语句有更好的方法吗?如下所示:
var pagedEmployees = new [] { emp }.Concat(allEmps).Skip(offset).Take(pageSize);
像这样:
var pagedEmployees = new [] { emp }.Concat(allEmps).Skip(offset).Take(pageSize);
查看此问题:.查看此问题:.查看员工列表:
employees.Concat(employees.SelectMany(x => x.Employees)).Skip(offset).Take(pageSize);
示例(产出7):
公共类员工
{
公职人员()
{
}
公职人员(整编)
{
雇员=新名单();
列表=员工作为列表;
for(int i=0;ix.employees));
Console.WriteLine(enumerable.Count());
Console.Read();
}
}
有关员工列表:
employees.Concat(employees.SelectMany(x => x.Employees)).Skip(offset).Take(pageSize);
示例(产出7):
公共类员工
{
公职人员()
{
}
公职人员(整编)
{
雇员=新名单();
列表=员工作为列表;
for(int i=0;ix.employees));
Console.WriteLine(enumerable.Count());
Console.Read();
}
}
切勿写入(从e中选择e)
。没用。对,你可以只做allEmps.Skip(偏移量)。Take(页面大小)代码>。切勿写入(从e中选择e)
。没用。对,你可以只做allEmps.Skip(偏移量)。Take(页面大小)代码>。