C# 使用Linq从两个表中获取数据

C# 使用Linq从两个表中获取数据,c#,asp.net,linq,entity-framework,C#,Asp.net,Linq,Entity Framework,首先,我想说我对实体框架完全陌生,但我想学习它,所以我的问题是我有三个表。 第一个用于存储作者详细信息。 表的结构为 用于存储所有物品的第二张表 表的结构为 表3用于存储注释 表的结构为 正如我的客户所希望的,我在数据库中没有外键,但它们有关系,我正在从代码中处理它们(请不要问为什么,因为我也不知道我的客户为什么不需要外键):) 我现在所做的是,我有一个管理面板,其中有一个网格视图,我在其中绑定Author表,单击任何一行它都会打开另一个页面 页面源代码示例: <div> &

首先,我想说我对实体框架完全陌生,但我想学习它,所以我的问题是我有三个表。 第一个用于存储作者详细信息。
表的结构为

用于存储所有物品的第二张表
表的结构为

表3用于存储注释
表的结构为

正如我的客户所希望的,我在数据库中没有外键,但它们有关系,我正在从代码中处理它们(请不要问为什么,因为我也不知道我的客户为什么不需要外键):)

我现在所做的是,我有一个管理面板,其中有一个网格视图,我在其中绑定Author表,单击任何一行它都会打开另一个页面

页面源代码示例:

<div>
 <asp:ListView ID="articles" runat="server">
<ItemTemplate>
Label1//Here Goes the Article Id
Label2//Here Goes the Article Names
<div>
//Another Listview For Comments
 <asp:ListView ID="comments" runat="server">
<ItemTemplate>
Here Goes All the Comments
</ItemTemplate>
</asp:ListView>
</div>
</ItemTemplate>
</asp:ListView>
我将从GridView行单击获取AuthID

我知道这不是一件大事,但我在这方面是全新的

问题:2

谢谢你给了我一个完美的解决方案,还有一个问题。在我的第一个问题中,我从两个表中获取数据,因此建议在Linq中使用Join,但在我的第二个问题中,我有一个表,表格式如下。

如果类型为1,则收到;如果类型为2,则回复。
Refmailid是我将回复邮件的时间,如果“mailid”为1,则该回复的“Refmailid”将为1,通过该值我可以获取一封邮件的所有回复 所以我想要的,就像这里的文章和评论一样,我从用户那里获取所有收到的邮件,从列中获取唯一的用户ID

那我什么时候去拿

Context.SupportRequests.Select(x=>x.from=="theuniqueuserid" && type==1).ToList();
我将得到所有收到的邮件,从使用,就像前面的div

<div>
     <asp:ListView ID="receivedmails" runat="server">
    <ItemTemplate>
    Label1//Here Goes subject
    Label2//Here Goes the content
    <div>
    //Another Listview For Replies
     <asp:ListView ID="replies" runat="server">
    <ItemTemplate>Here Goes All the replies will be more then one so it will be reapeated
with 
//Subject
//Content
    </ItemTemplate>
    </asp:ListView>
    </div>
    </ItemTemplate>
    </asp:ListView>
</div>
你需要加入

var result = (from a in Context.Articles
             join c in Context.Comments on a.ArticleId equals c.ArticleId
             select new{ Article = a, Comment = c});

您的客户不应该口述实施细节。作为实施者,您应该明确理解他们为什么有这样的限制。“为什么?”的答案可能会推动其他设计决策。在编写更多代码之前,请与您的客户交谈!抱歉,兄弟,他们说外键会使应用程序速度变慢,而且他们是一个什么都不想听的客户(哇,这太疯狂了。他们对主键的感觉如何?:p你也可以加入多个表。不清楚用相关信息编辑你的问题或问一个新问题
 Context.SupportRequests.Select(x=>x.refmailid=="mailid").ToList();
var result = (from a in Context.Articles
             join c in Context.Comments on a.ArticleId equals c.ArticleId
             select new{ Article = a, Comment = c});