asp.net - 使用中继器,获取 FK 并显示该表中的列

标签 asp.net linq

使用中继器,我运行“SelectedUtility”表并输出匹配的位置。 这工作正常,但它显示“Utility_Id”,它是“实用程序表”中“id”的外键。

我实际上想在实用程序表中显示“名称”列。我怎样才能做到这一点... 类似 <th style="width:200px;"><%# Eval("Utility_Id.name") %></th>
或者是在后面的代码中完成的...感谢您的任何回复

aspx:

 <asp:Repeater id="rptSelectedUtilities" runat="server">
                <HeaderTemplate>
                    <table class="detailstable FadeOutOnEdit">
                        <tr>   
                            <th style="width:200px;">Utility</th>    
                        </tr>
                </HeaderTemplate>
                <ItemTemplate>
                        <tr>
                            <th style="width:200px;"><%# Eval("Utility_Id") %></th> 
                        </tr>
                </ItemTemplate>
                <FooterTemplate>
                    </table>
                </FooterTemplate>
            </asp:Repeater>

隐藏代码:

DBData db = new DBDatat();
        List<Select_Utility> SelectedUtility = 
            (from SU in db.Select_Utilities
             where SU.Work_Id == 3
             select SU).ToList();

        rptSelectedUtilities.DataSource = SelectedUtility;

rptSelectedUtilities.DataBind();


编辑:

   DBData db = new DBDatat();
    List<Utility_Company> Utility = new List<Utility_Company>();
    List<Select_Utility> SelectedUtility = 
        (from SU in db.Select_Utilities
         join UTL in Utility on SU equals UTL.id
         where SU.Worksite_Id == 3
         select SU).ToList();

    rptSelectedUtilities.DataSource = SelectedUtility;
    rptSelectedUtilities.DataBind();

抛出错误“连接子句中的表达式之一的类型不正确”。调用“join”时类型推断失败

//连接应该是名称..所以在SU上的Utility中加入UTL等于UTL.Name//而不是UTL.id

还尝试在 SU 上的 db.Utility_Companies 中加入 UTL 等于 UTL.id...但出现相同的错误


第二次编辑: <%# Eval("名称") %> 抛出错误:DataBinding:“Select_Utility”不包含名称为“Name”的属性。

     DBData db = new DBData();

        List<Select_Utility> SelectedUtility = 
            (from SU in db.Select_Utilities
             where SU.Worksite_Id == 3
             select SU).ToList();

        rptSelectedUtilities.DataSource = SelectedUtility;
        rptSelectedUtilities.DataBind();


   List<Utility_Company> Utility = new List<Utility_Company>();
        var query = from u in db.Utility_Companies
                    join su in db.Select_Utilities
                         on u.id equals su.Utility_Id
                    where su.Worksite_Id == 3
                    select u;

        rptSelectedUtilities.DataSource = query.ToList();
        rptSelectedUtilities.DataBind();

最佳答案

查询(您应该选择加入的实用程序):

DBData db = new DBDatat();
var query = from u in db.Utility
            join su in db.Select_Utilities
                 on u.Id equals su.Utility_Id
            where su.Work_Id == 3
            select u;

rptSelectedUtilities.DataSource = query.ToList();
rptSelectedUtilities.DataBind();

页面(实用程序的显示名称):

<th style="width:200px;"><%# Eval("Name") %></th>

关于asp.net - 使用中继器,获取 FK 并显示该表中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15246017/

相关文章:

c# - 我如何在 C# 中处理这副牌(字典)

css - 复制带有样式的网页内容

c# - LINQ中的Case查询相当于sql查询

c# - 即使一组为空,获取笛卡尔积的 LINQ 查询是什么?

linq - "group by"在 LINQ 中如何工作?错误 "' 对象'不包含 'type' 的定义“

C# Linq to Entities 获取日期范围包含当月日期的记录

mysql - 如何以编程方式处理休眠连接? - mysql

c# - ASP.NET 2.0 - 需要以编程方式单击链接

c# - 更新/插入信息时出错

c# - 通过 Linq 比较两个数据表