我正在运行以下foreach
循环:
@model IList<Employees>
@{
var emp1 = Model.GroupJoin(Model,
d => d.DeptId, e => e.Dept.DeptId,
(e, d) => new { Emps = e, Dept = d });
}
@foreach (var item in emp1)
{
<div class="section">
<h5>@item.Emps.Dept.DeptName</h5>
<div class="members">
<ul class="list-unstyled">
@{
var dept1 = item.Dept.OrderByDescending(x => x.ManagerFlag == true);
}
@foreach (var dept in dept1)
{
<li class="@(dept.ManagerFlag == true ? "media dotted" : "media")">
<img class="mr-3" src="~/images//icons/image.png" alt="">
<div class="media-body d-flex">
<div class="text" id="liText">
<h5 class="mt-0 mb-1"> @dept.Firstname @dept.Lastname</h5>
<p>@dept.Title (<span class="loc">@dept.Location.LocationCode</span>)</p>
</div>
</div>
<div class="links">
<a href="mailto:@dept.Email">
<img src="~/images/icons/envelope.png" alt="">
</a>
<a href="https://www.slack.com">
<img src="~/images/icons/slack.png" alt="">
</a>
<a href="#" class="btn archiveButton" data-toggle="modal" data-target="#archivePerson">
Archive
</a>
</div>
</li>
}
</ul>
</div>
</div>
}
但是由于某些原因,相同的“ Dept_Names”与第二条foreach
语句会多次显示。为什么会这样呢?
即Emp1显示多个相同的dept_names
谢谢
答案 0 :(得分:2)
这是一个控制台应用程序,可以满足您的需求……您的GroupJoin导致了重复。看看这是否有助于您朝正确的方向前进。
class Program
{
static void Main(string[] args)
{
List<Department> deps = new List<Department>();
Department finanace = new Department { Id = 1, Name = "Finance & Accounting" };
deps.Add(finanace);
Department hr = new Department { Id = 2, Name = "People - HR" };
deps.Add(hr);
List<Employee> emps = new List<Employee>();
emps.Add(new Employee { Id = 1, Name = "Finance Person 1", Department = finanace });
emps.Add(new Employee { Id = 2, Name = "Finance Person 2", Department = finanace });
emps.Add(new Employee { Id = 3, Name = "HR Person 1", Department = hr });
emps.Add(new Employee { Id = 4, Name = "HR Person 2", Department = hr });
var grouped =
deps.GroupJoin(emps,
dept => dept,
emp => emp.Department,
(dept, employeeList) =>
new
{
DepartmentName = dept.Name,
Employees = employeeList.Select(employee => employee.Name)
});
foreach (var dept in grouped)
{
Console.WriteLine(dept.DepartmentName);
foreach (var emp in dept.Employees)
{
Console.WriteLine(emp);
}
Console.WriteLine();
}
Console.ReadLine();
}
}
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public int DepartmentId { get; set; }
public Department Department { get; set; }
}
public class Department
{
public int Id { get; set; }
public string Name { get; set; }
}