LINQ查询中的自连接并返回视图

2024-03-08

我正在使用 LINQ 自联接查询在视图上显示数据。我的 sql 表包含一些员工详细信息。我需要显示员工详细信息及其经理姓名 因为它是表中的 ManagerID



EmpID  Name ManagerID   Designation Phone   Address
1   Mike    3          Developer    123456  Texas
2   David   3           RM          123456  Delhi
3   Roger   NULL        GM          123456  Dallas
4   Marry   2          Developer    123456  NY
5   Joseph  2          Developer    123456  Singapore
7   Ben 2              Developer    123456  Mumbai
8   Steven  3          TL           123456  Banglore
   

我需要将其更改为名称

我的代码在控制器操作中

var emp = from m in t.Employees
          join e1 in t.Employees on m.ManagerID equals e1.EmployeeID
          select new { Id = m.EmployeeID , 
                       Name = m.Name, 
                       Manager = e1.Name , 
                       Designation = m.Designation,
                       Phone =m.Phone ,address = m.Address };

return View(emp.Tolist());

并在视图中

@model IEnumerable <mvc4application.models.employee>

但我收到运行时错误

传入字典的模型项的类型为 系统.数据.对象.ObjectQuery1[<>f__AnonymousType16[系统.Int32,系统.字符串, 系统.字符串、系统.字符串、系统.可为空1[System.Int32],System.String]]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable1[Mvc4application.Models.Employee]'.] System.Web.Mvc.ViewDataDictionary`1.SetModel(对象值)+405487

当然,我理解这一点,因为我的观点是使用Mvc4application.Models.Employee type .

因为我无法将其转换为模型类型。

我们可以在MVC中使用SQL视图作为模型,以便我们可以在SQL中进行连接吗?


您正在返回一个匿名对象,而您的视图是强类型的IEnumerable<mvc4application.models.employee>.

我强烈建议您编写一个视图模型,该模型将满足您的视图的要求,并包含您想要在此视图中使用的信息:

public class EmployeeViewModel
{
    public int EmployeeID { get; set; }
    public string Name { get; set; }
    public string ManagerName { get; set; }
    public string Designation { get; set; }
    public string Phone { get; set; }
    public string Address { get; set; }
}

然后调整您的 LINQ 查询,以便将各种域 EF 对象投影到视图模型中:

IEnumerable<EmployeeViewModel> employees = 
    from m in t.Employees
    join e1 in t.Employees on m.ManagerID equals e1.EmployeeID
    select new EmployeeViewModel
    { 
        EmployeeID = m.EmployeeID , 
        Name = m.Name, 
        ManagerName = e1.Name,
        Designation = m.Designation,
        Phone = m.Phone,
        Address = m.Address 
    };

    return View(employees.ToList());

最后使您的视图强类型化到视图模型:

@model IList<EmployeeViewModel>

现在您可以提供信息:

<table>
    <thead>
        <tr>
            <th>ID</th>
            <th>Name</th>
            <th>Manager name</th>
            <th>Designation</th>
            <th>Phone</th>
            <th>Address</th>
        </tr>
    </thead>
    <tbody>
        @for (var i = 0; i < Model.Count; i++)
        {
            <tr>
                <td>@Html.DisplayFor(x => x[i].EmployeeID)</td>
                <td>@Html.DisplayFor(x => x[i].Name)</td>
                <td>@Html.DisplayFor(x => x[i].ManagerName)</td>
                <td>@Html.DisplayFor(x => x[i].Designation)</td>
                <td>@Html.DisplayFor(x => x[i].Phone)</td>
                <td>@Html.DisplayFor(x => x[i].Address)</td>
            </tr>
        }
    </tbody>
</table>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LINQ查询中的自连接并返回视图 的相关文章

  • 编写此代码片段的有效方法是什么? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 更有效和 或更短地重写此代码以节省字节并显得不那么冗长的方法 if N 2 0 N 6 N 8 N 10 N 12 N 14 N 16 N
  • 元组在 VS2012 中如何工作?

    Visual Studio 2012 功能 tuples但不是可变参数模板 这是如何完成的 如何在不使用可变模板的情况下实现元组 简而言之 微软做了与之前在 NET 中实现类似元组的数据类型完全相同的事情 创建许多版本 每个版本都有固定数量
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • MFC CList 支持复制分配吗?

    我在 MSVC 中查找了 CList 定义afxtempl h http www cppdoc com example mfc classdoc MFC AFXTEMPL H html并记录在MSDN http msdn microsoft
  • 将 OpenCV Mat 转换为数组(可能是 NSArray)

    我的 C C 技能很生疏 OpenCV 的文档也相当晦涩难懂 有没有办法获得cv Mat data属性转换为数组 NSArray 我想将其序列化为 JSON 我知道我可以使用 FileStorage 实用程序转换为 YAML XML 但这不
  • 在 ASP.NET MVC 中将模型从视图传递到控制器

    我正在 ASP NET MVC 中开发我的第一个应用程序 但遇到了一个我无法解决的问题 即使在阅读了整个互联网之后也是如此 因此 我有几个使用视图模型创建的视图 它们是报告 这些视图模型是根据用户选择标准填充的 我正在尝试构建一种接受模型并
  • C# 处理标准输入

    我目前正在尝试通过命令行断开与网络文件夹的连接 并使用以下代码 System Diagnostics Process process2 new System Diagnostics Process System Diagnostics Pr
  • C 中“complex”的默认类型

    根据我读过的文档 C99 和更高版本的支持float complex double complex and long double complex作为复杂类型 但是 此代码在使用时编译时不会发出警告gcc Wall Wextra inclu
  • 为什么需要数字后缀?

    C 语言 我确信还有其他语言 需要在数字文字末尾添加后缀 这些后缀指示文字的类型 例如 5m是一个小数 5f是一个浮点数 我的问题是 这些后缀真的有必要吗 或者是否可以从上下文中推断出文字的类型 例如 代码decimal d 5 0应该推断
  • 在 C# 中何时使用 ArrayList 而不是 array[]?

    我经常使用一个ArrayList而不是 正常 array 当我使用时 我感觉好像我在作弊 或懒惰 ArrayList 什么时候可以使用ArrayList在数组上 数组是强类型的 并且可以很好地用作参数 如果您知道集合的长度并且它是固定的 则
  • 用于连接 DataTable 上的动态列的动态 LINQ

    我目前遇到的情况不确定如何继续 我有两个从数据库填充的数据表 我还有一个可用的列名称列表 可用于将这两个数据表连接在一起 我希望编写一组 LINQ 查询 这些查询将 显示两个数据表中的行 内部联接 用于从一个数据表更新另一个数据表 显示一个
  • 为什么不能调用带有 auto& 参数的 const mutable lambda?

    include
  • 如何在 C# 中获取 Json 数组?

    我有一个像这样的 Json 字符串 我想将它加载到 C 数组中 当我尝试这样做时 我收到异常 我的字符串 customerInformation customerId 123 CustomerName Age 39 Gender Male
  • 无法为 wsdl 文件创建服务引用

    I have wsdl文件和xsd我本地机器上的文件 我想在项目中添加服务引用 我没有网络服务 我只有wsdl file 我收到以下错误 The document was understood but it could not be pro
  • 使用 OleDbCommandBuilder 时访问 SQL 语法错误

    我要在 C 中使用 OleDbDataAdapter 在 Access 数据库中插入数据 但收到错误消息INSERT INTO 命令中的语法错误 BackgroundWorker worker new BackgroundWorker Ol
  • C# 中的 C/C++ 代码编译器

    在 C 中 我可以使用下面的代码编译 VB 和 C 代码 但无法编译 C C 代码 有什么办法可以做到这一点吗 C 编译器 public void Compile string ToCompile string Result null st
  • 无法在 C# 中为 EventArgs 分配使用派生类型的事件处理程序

    所以我有一个事件声明如下 public event EventHandler OnChangeDetected 然后我有以下处理程序被分配给该事件 myObject OnChangeDetected OnTableChanged 我的理解是
  • C 语言中的 Alpha 混合 2 RGBA 颜色[重复]

    这个问题在这里已经有答案了 可能的重复 如何快速进行阿尔法混合 https stackoverflow com questions 1102692 how to do alpha blend fast 对 2 个 RGBA 整数 颜色进行
  • 如果“嵌入式”SQL 2008 数据库文件不存在,如何创建它?

    我使用 C ADO Net 和在 Server Management Studio 中创建的嵌入式 MS SQL 2008 数据库文件 附加到 MS SQL 2008 Express 创建了一个数据库应用程序 有人可以向我指出一个资源 该资
  • C++ Boost ASIO 简单的周期性定时器?

    我想要一个非常简单的周期性计时器每 50 毫秒调用我的代码 我可以创建一个始终休眠 50 毫秒的线程 但这很痛苦 我可以开始研究用于制作计时器的 Linux API 但它不可移植 I d like使用升压 我只是不确定这是否可能 boost

随机推荐

  • 如何从 url 中删除 returnurl?

    当用户想要访问需要登录的页面时 我想从地址栏中删除 returnurl blabla 因为我试图在登录后将用户重定向到静态页面以进行一些选择 我怎样才能做到这一点 这就是本质表单验证 我猜你正在使用 也就是说 当您访问需要身份验证的页面时
  • Angular 4.0 + Spring boot + Spring Security:TemplateInputException:解析模板“登录”时出错

    我正在将 Spring Security 集成到我的第一个 Angular 项目中 我关注了许多文章和示例 包括this https github com kamalber spring boot angular4 authenticati
  • org.apache.velocity.exception.ResourceNotFoundException

    我正在使用速度引擎模板在 struts1 和 hibernate 配置中进行邮件发送 我收到错误 org apache velocity exception ResourceNotFoundException当我尝试发送邮件时 我已经包含了
  • Jetty 中的传输速度较慢,在特定缓冲区大小下采用分块传输编码

    我正在调查 Jetty 6 1 26 的性能问题 Jetty 似乎使用Transfer Encoding chunked 并且根据所使用的缓冲区大小 本地传输时可能会非常慢 我创建了一个小型 Jetty 测试应用程序 其中包含一个演示该问题
  • 未捕获(承诺中)DOMException:超出配额

    我正在尝试查看离线状态演示 https serviceworke rs offline status demo html从下面的链接 我得到 DOMException 超出配额 https serviceworke rs offline s
  • Java 的 java.util.concurrent 包在 .NET 中的等价物是什么?

    我有 Java 背景 我想了解有关 Net 和 C 中并发性的更多信息 有没有类似Java的concurrent utils包的东西 最接近的是 NET 4 0 中的新线程功能 也称为并行扩展 NET 的现有功能 即 3 5 及更早版本 优
  • 同一 data.frame 中的分组/重新编码因素

    假设我有一个像这样的数据框 df lt data frame a letters 1 26 1 26 我想将 a b 和 c 重新 因子为 a 我怎么做 一种选择是recode 包中的函数car require car df lt data
  • PHP中下个月日期时间戳的最后一天? [复制]

    这个问题在这里已经有答案了 我正在使用以下函数来获取当前时间戳 created timestamp date Y m d H i s 但是我如何获得下个月最后一天的时间戳 例如 如果是 9 月 15 日 则获得 10 月 31 日 包括所有
  • 如何为 Chart.js (chartjs.org) 中的所有图表类型添加标签/图例?

    Chart js 的文档提到了 图例模板 但没有提供此类图例的资源或示例 这些如何显示呢 您可以在图表选项中包含图例模板 legendTemplate takes a template as a string you can populat
  • Electron 中渲染器和主进程的区别

    我最初认为 Electron 中的渲染器进程是在类似 chrome 的环境中沙箱化的 这意味着你所能做的就是弄乱 DOM 但是 我最近了解到您可以访问文件系统 运行子进程并获取其输出 以及导入您想要的任何其他节点模块 如果是这样的话 主进程
  • 如何使用 Javascript 将数组拆分为基于值的多个数组?

    我有一个数组 我想根据值 完成 将其拆分为多个数组 当我找到它时 我拆分数组 我的代码是 var input urlGettingF BROKEN aquaHTTP 404 BROKEN url1HTTP 404 ok urlok Fini
  • 提高 html canvas mousemove 图像蒙版的性能

    我有一个画布 正在绘制图像并进行剪辑以创建图像被显示的效果 我的代码工作正常 我尝试使用 debouce 方法和 rAF 来提高画布渲染性能 但我只看到了很小的收益 如果有的话 我怀疑我迭代 x 和 y 坐标数组的方式可能是问题所在 当将数
  • Flutter - JSON 和时间序列图表

    我试图在时间序列图表中显示一些数据 我找到了一个例子 https google github io charts flutter example time series charts simple html https google git
  • 找到一条经过最大点数的线[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 创建机器人时出错

    我在创建机器人时遇到错误 我正在尝试部署一个网络应用程序机器人 指定资源组的名称及其位置后 我单击 创建 之后机器人部署过程开始 但最终会出现错误 MsaAppId MsaAppId 已在使用中 我可以做什么来成功部署基本机器人 这是一周内
  • 按一列分组,为每对列选择一列中最小值的行

    很难说清楚的问题 这是我想做的一个例子 我开始的一个例子 set seed 0 dt lt data table dr1 d rnorm 5 dr1 p abs rnorm 5 sd 0 08 dr2 d rnorm 5 dr2 p abs
  • 使用 Python 更改控制台窗口的位置 (Windows)

    是否可以通过python改变Windows控制台的位置 如果没有 有什么解决方法吗 我不知道您是否需要任何具体信息 但以防万一 我使用的是 Windows 8 1 64x Python 3 5 0 控制台是通过Popen主要目标是将其移动到
  • 如何使用用例关系 - uml

    嘿伙计们 我一直在研究 UML 并且正在尝试设计问题的用例图 假设我的应用程序包含以下内容 两个要求 创建团队 创建玩家 这是这笔交易 用户可以创建一个球队 创建球队后可以为该球队创建球员 非必需 但在这个应用程序中有多个用户 一个用户可以
  • 将Django模型父类添加到现有模型中以实现多表继承

    The Django 文档 https docs djangoproject com en 1 9 topics db models multi table inheritance使用此示例来演示多表继承 from django db im
  • LINQ查询中的自连接并返回视图

    我正在使用 LINQ 自联接查询在视图上显示数据 我的 sql 表包含一些员工详细信息 我需要显示员工详细信息及其经理姓名 因为它是表中的 ManagerID EmpID Name ManagerID Designation Phone A