Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 当类型与linq相同时,选择父级和子级_C#_Linq - Fatal编程技术网

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(页面大小)