在 linq 中使用内部联接

本文关键字:内部 linq | 更新日期: 2023-09-27 18:35:14

你能帮我连接表(Сотрудник and Должность) 在 EmployeController (MVC 4),

源代码 :

public ViewResult List(int page = 1)
{
    EmployeListViewModel viewModel = new EmployeListViewModel
    {
        Employes = repository.Сотрудник
        .OrderBy(e => e.FAM).ThenBy(n => n.Name).Skip((page - 1) * PageSize)
        .Take(PageSize),
        PagingInfo = new PagingInfo
        {
            CurrentPage = page,
            itemsPerPage = PageSize,
            TotalItems = repository.Сотрудник.Count()
        }
    };
    return View(viewModel);
}

员工的源存储库:

using System.Linq;
using WebService.Domain.Abstract;
using WebService.Domain.Entities;
namespace WebService.Concrete
{
    public class EFEmployeRepository: IEmployeRepository
    {
        private EFDbContext context = new EFDbContext();
       public IQueryable<Сотрудник> Сотрудник
        {
            get { return context.Сотрудник; }
        }
    }
}

我需要帮助来连接表(Сотрудник[appointmnet_id] 与 Должность[ID])

在 linq 中使用内部联接

在 Сотрудник 上创建一个属性,称为 Должность 类型的任命。 然后,您不需要加入,您只需遵循存储库中的导航属性。

编辑:代码示例

类定义:

public class Сотрудник {
    ...
    public int appointmnet_id { get; set; }
    [ForeignKey(appointment_id)]
    public Должность appointment { get; set; }
}

存储库方法:

public List<Сотрудник> GetStuff(int page, int PageSize) {
    return (
        from e in repository.Сотрудник.Include("appointment")
        orderby e.FAM
        thenby e.Name
        select e
    ).Skip((page - 1) * PageSize).Take(PageSize).ToList();
}

MVC 操作:

public ViewResult List(int page = 1)
{
    EmployeListViewModel viewModel = new EmployeListViewModel
    {
        Employes = GetStuff(page, PageSize),
        PagingInfo = new PagingInfo
        {
            CurrentPage = page,
            itemsPerPage = PageSize,
            TotalItems = repository.Сотрудник.Count()
        }
    };
    return View(viewModel);
}