You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用LINQ关联两表查询指定字段返回列表绑定MVC视图

问题根因

原代码无法返回正确关联数据的核心问题有3个:

  • 没有编写两表关联逻辑:id.FirstOrDefault().Name固定返回教会表的第一条记录,所有用户都会被匹配到同一个教会名称,完全没有按照UserTbl.C_ID对应CongregationTbl.ID的规则匹配关联数据。
  • 查询结果使用匿名类型,在MVC做强类型视图绑定时存在访问限制,很容易出现绑定失败。
  • 存在变量名大小写笔误:实例化的模型对象名为MyModel,返回视图时传入的是小写开头的myModel,会直接触发编译报错。
修正方案

使用LINQ的join子句完成两表的外键关联,改用强类型类承载查询结果,避免匿名对象的绑定问题,修正笔误即可。
首先定义强类型类承载单条用户数据,原有MergeModel调整为使用该强类型集合:

// 单条待审核用户数据的强类型类
public class PendingUserItem
{
    public string Name { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

public class MergeModel
{
    public List<PendingUserItem> PendingUsers { get; set; }
}

控制器中查询逻辑修正为关联查询写法:

using (Model1 dc = new Model1())
{
    var list = from user in dc.UserTbl
               // 按外键关联教会表
               join cong in dc.CongregationTbls on user.C_ID equals cong.ID
               where user.AccountConfirmed == false
               select new PendingUserItem
               {
                   Name = cong.Name,
                   FirstName = user.FirstName,
                   LastName = user.LastName
               };

    MergeModel myModel = new MergeModel();
    myModel.PendingUsers = list.ToList();
    return View(myModel);
}

视图中绑定MergeModel遍历输出即可得到和预期一致的表格效果:

@model MergeModel
<table>
    <thead>
        <tr>
            <th>Name</th>
            <th>FirstName</th>
            <th>LastName</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var user in Model.PendingUsers)
        {
            <tr>
                <td>@user.Name</td>
                <td>@user.FirstName</td>
                <td>@user.LastName</td>
            </tr>
        }
    </tbody>
</table>

内容的提问来源于stack exchange,提问作者Manny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 12:09:20