Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Fetch data From Two tables using Linq

all 1st of all I want to say I am totally new to Entity Framework but I want to learn it so My question is I have three tables. 1st for storing author details.
Structure of the table is

enter image description here

2nd table for storing all the articles
Structure of the table is

enter image description here

and Table 3 for Storing comments
Structure of the table is

enter image description here

and as My client want I have no foreign key in Database but they have relations and I am handling them from code (Please don't ask why because I also don't know why my client don't want foreign Key) :)

What I am doing Now I have an Admin Panel where there is a Grid View Where I am binding the Author Table and on Clicking of Any Row it will open another page

Page source Code Example:

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

So What I am doing First I am binding the Article List and after binding I am doing a Foreach Loop Inside the article List to find all the article id and the Comment List view Note: As for the code You can see the comment list will be repeated for each article Once I find the Comment ID the I fetch the comments for that id and bind it to the Comment List.

So here my problem is I am connecting to the DB for two times but I want to do this in a Single connection is there any way by which I can fetch all the rows of comment table for the article id while fetching the Articles.

My Article Fetching code is

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

I will get the AuthID from GridView Row Click.

I know it is not a huge thing but I am totally new in this.

Question:2

Thanks to Ehsan Sajjad for giving me the perfect solution So there is another Question. In my first Question I was getting data from two tables so The suggestion was to use Join in Linq but in my Second Question I have one table and the Table format is like this.
enter image description here
If the type is 1 then Received else if the type is 2 then replied.
Refmailid is when I will reply to a mail for ex if "mailid" is 1 then for that reply "refmailid" will be 1 by which I can fetch all the replies of one mail So what I want, just like articles and comments here also I am fetching all the received mails from a user the from Column is a Unique Userid

so when I will fetch

Context.SupportRequests.Select(x=>x.from=="theuniqueuserid" && type==1).ToList();

I will get all the received mails from that use and just like the previous 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>

So What I am doing? First I am binding the Received List and after binding I am doing a Foreach Loop Inside the Received List to find all the "mailid" and the replied List view Note: As for the code You can see the replied list will be repeated for each received mail Once I find the "mailid" then I will fetch the replies for that id and bind it to the reply List. Code for that

 Context.SupportRequests.Select(x=>x.refmailid=="mailid").ToList();
like image 378
Shubham Avatar asked Nov 28 '25 12:11

Shubham


1 Answers

You need join

var result = (from a in Context.Articles
             join c in Context.Comments on a.ArticleId equals c.ArticleId
             select new{ Article = a, Comment = c});
like image 101
Ehsan Sajjad Avatar answered Nov 30 '25 03:11

Ehsan Sajjad



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!