与超过 2 或 3 个表的连接,其中 Where 子句使用 Lambda 表达式.然后将对象发送到视图



我已经成功创建了查询,用于通过 lambda 表达式以及其他方式从 6 个表中获取数据。(抱歉不知道如何称呼我应用的其他方法(。无论如何,现在的问题是,我不知道如何将此对象发送到视图。通常,我曾经发送模型或视图模型的对象。请帮忙!

提前非常感谢!

我尝试创建ViewModel并包含查询中包含的所有对象,但我无法解决它们。可能是错误的策略,也可能是我不知道该怎么做。

var my = _context.Clients.Join(_context.Consultants, cli => cli.consultantID, con => con.ConsultantId,
            (cli, con) => new
            {
                aClient = cli,
                aConsultant = con
            }).Join(_context.ClientPhone.Where(ph => ph.PrimaryPhone), cli => cli.aClient.ClientCNIC, ph => ph.ClientCNIC, (cli, ph) => new
            {
                cli.aClient,
                cli.aConsultant,
                aPhone = ph
            }).Join(_context.clientemail.Where(e => e.PrimaryEmail), cli => cli.aClient.ClientCNIC, e => e.ClientCNIC, (cli, e) => new
            {
                cli.aClient,
                cli.aConsultant,
                cli.aPhone,
                aEmail = e
            }).Join(_context.ITRStatus, cli => cli.aClient.ClientCNIC, itr => itr.ClientCNIC, (cli, itr) => new
            {
                cli.aClient,
                cli.aConsultant,
                cli.aEmail,
                cli.aPhone,
                aItr = itr
            }).Join(_context.ClientStatus, cli => cli.aItr.ClientstatusId, ss => ss.clientstatusId, (cli, ss) => new
            {
                cli.aClient,
                cli.aConsultant,
                cli.aEmail,
                cli.aItr,
                cli.aPhone,
                aStatus = ss
            }).Select(s => new
            {
                s.aClient.clientName,
                s.aClient.ClientCNIC,
                s.aClient.ClientPassword,
                s.aConsultant.ConsultantName,
                s.aEmail.Email,
                s.aPhone.Phone,
                s.aStatus.StatusString
            }).ToList();
        return View(my);

期望的结果是什么,我以某种方式通过模型将对象发送到视图,然后使用 foreach 在视图中迭代模型。

您可以在视图中执行类似动态@model操作。这样你就可以直接将变量"my"传递给它。

顺便说一句,您将失去对模型的智能感知

显然,我尝试了几种方法,找到了自己问题的解决方案!

这是我所做的。

只是为查询中包含的对象创建了视图模型。然后在控制器中如下所示:

var viewModel = new List<ClientIndexViewModel>();
        foreach (var item in my)
        {
            viewModel.Add(new ClientIndexViewModel()
            {
                Client = item.aClient,
                Phone = item.aPhone,
                Consultant = item.aConsultant,
                Email = item.aEmail,
                ClientStatus = item.aStatus,
            });
        }
        return View(viewModel);

View.cshtml

 <tbody>
    @foreach (var item in Model)
    {
        <tr>
            <td>
                @item.Client.clientName
            </td>
        </tr>

它是动态的,也提供智能感知。顺便说一句,我刚刚发布了足以理解的代码部分,请原谅任何不足。

相关内容

最新更新