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

时间:2015-02-18 15:29:12

标签: c# asp.net linq entity-framework

所有我首先要说的是我对Entity Framework完全不熟悉,但我想学习它,所以我的问题是我有三张桌子。 第一个用于存储作者详细信息 表的结构

enter image description here

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

enter image description here

和表3存储评论
表的结构

enter image description here

并且我的客户希望我在数据库中没有外键,但他们有关系,我正在处理它们的代码(请不要问为什么,因为我也不知道为什么我的客户不会&#39 ; t想要外键):))

我在做什么现在我有一个管理面板,其中有一个网格视图我在哪里绑定作者表,点击任意一行它将打开另一页

页面源代码示例:

<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>

所以我在做什么首先我绑定文章列表并绑定后 我正在文章列表中进行Foreach循环以查找所有文章ID和注释列表视图 注意:至于代码您可以看到每篇文章都会重复注释列表 一旦找到了注释ID,我就会获取该ID的注释并将其绑定到注释列表。

所以这里我的问题是我连接到数据库两次但我想在单连接中执行此操作是否有任何方法可以在获取文章时获取文章ID的所有注释表行

我的文章提取代码

Context.Artcles.Select(x=>x.x.RefAuth==AuthId).ToList();

我将从GridView Row点击。

获取AuthID

我知道这不是一件大事,但我完全是新手。

问题:2

感谢Ehsan Sajjad为我提供了完美的解决方案所以还有另一个问题。在我的第一个问题中,我从两个表中获取数据,因此建议使用Linq中的Join,但在我的第二个问题中,我有一个表,Table格式是这样的。
enter image description here
如果类型是1,那么如果类型是2则接收else,然后回复。
如果&#34; mailid&#34;那么Refmailid是我将回复邮件的时间。然后是1回答&#34; refmailid&#34;将是1我可以获取一封邮件的所有回复 所以我想要的,就像这里的文章和评论一样,我从用户那里获取所有收到的邮件,来自Column是一个独特的用户标识

所以当我拿到

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>

那我在做什么?首先,我绑定收到列表并绑定后 我正在收到列表中的Foreach循环中查找所有&#34; mailid&#34;和回复的列表视图 注意:至于代码您可以看到每个收到的邮件将重复回复列表 一旦我找到&#34; mailid&#34;然后我将获取该id的回复并将其绑定到回复列表。 代码

 Context.SupportRequests.Select(x=>x.refmailid=="mailid").ToList();

1 个答案:

答案 0 :(得分:3)

您需要加入

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