【问题标题】:Compare two tables in asp.net比较asp.net中的两个表
【发布时间】:2014-01-04 23:27:28
【问题描述】:

我正在制作一个网站来显示有关游戏的各种统计数据。

我在一个 sql 数据库中有两个单独的表。一个叫 PlayerMatch,另一个叫 Match。

我要比较的两列是 PlayerMatch 中的 TeamId (PlayerMatch.TeamId vs. WinningTeamId in Match (Match.WinningTeamId)

为了展示这一切,我制作了一张桌子,里面放了一些 asp:repeaters。 这是其中之一,因为它们本质上是相同的。

<asp:Repeater ID="repHighGPM" runat="server">
     <ItemTemplate>
         <td><a href="Match.aspx?id=<%#Eval("Match.MatchNumber") %>"><%#Eval("Match.MatchNumber") %></a></td>
          <td><%#Eval("Match.WinningTeamId") %></td>
          <td><%#Eval("Name") %></td>
          <td>
               <img src=' <%#Eval("Image") %>' /></td>
          <td><%#Eval("GoldPerMinute") %></td>
      </ItemTemplate>
</asp:Repeater>

现在,问题是现在它只会显示获胜球队的 ID (Match.WinningTeamId)。但如果球员在那支球队中,则不会。所以本质上它只需要检查 PlayerMatch.TeamId == Match.WinningTeamId。如果这是真的,它应该写“赢得比赛”,而假将是“失败的比赛”

有什么想法吗?我知道它应该是某种 if-else 函数,但我不知道该怎么做。

【问题讨论】:

  • 你最好在你的 SQL 查询中这样做

标签: c# asp.net sql linq


【解决方案1】:

您可以在 sql 查询中使用内连接: 为您的数据库创建一个数据源,然后编写查询,然后将数据源添加到转发器 DataSourceID="" ....

<asp:Repeater ID="repHighGPM" runat="server" DataSourceID="match">
     <ItemTemplate>
         <td><a href="Match.aspx?id=<%#Eval("Match.MatchNumber") %>"><%#Eval("Match.MatchNumber") %></a></td>
          <td><%#Eval("Match.WinningTeamId") %></td>
          <td><%#Eval("Name") %></td>
          <td>
               <img src=' <%#Eval("Image") %>' /></td>
          <td><%#Eval("GoldPerMinute") %></td>
      </ItemTemplate>
</asp:Repeater>    



    <asp:SqlDataSource ID="match" runat="server" ConnectionString="<%$ ConnectionStrings:database %>" SelectCommand="select m.match number, m.winningTeamID, Name ,Image from Match m inner join
        playermatch p on p.Teamid = m.WinningTeamId"></asp:SqlDataSource>

有关内部连接的更多信息,请阅读这篇文章: http://www.w3schools.com/sql/sql_join_inner.asp

【讨论】:

    【解决方案2】:

    我已经通过以下解决方案解决了这个问题:

        public string MatchResult (object Result) {
        int id = Convert.ToInt32(Request.QueryString["id"]);
        DOTA2DataContext db = new DOTA2DataContext();
        var Victory = Result;
        var TeamId = db.PlayerMatches.Where(x => x.TeamId == id);
        var WinningTeam = db.Matches.Where(x => x.WinningTeamId == id);
        {
            if (TeamId == WinningTeam)
            { 
                return "Won match";
            }
            else
            {
                return "Lost match";
            }
    
        }
    }
    

    还有中继器。

    <asp:Repeater ID="repHighD" runat="server">
                            <ItemTemplate>
                                <td><a href="Match.aspx?id=<%#Eval("Match.MatchNumber") %>"><%#Eval("Match.MatchNumber") %></a></td>
                                <td><%# MatchResult(Eval("Match.WinningTeamId"))%></td>
                                <td><%#Eval("Hero.Name") %></td>
                                <td>
                                    <img src=' <%#Eval("Hero.Image") %>' /></td>
                                <td><%#Eval("Denies") %></td>
                            </ItemTemplate>
                        </asp:Repeater>    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 2020-07-17
      • 2021-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多