• Status: Solved
  • Priority: Medium
  • Security: Private
  • Views: 95
  • Last Modified:

Help writing a C# function which returns the ID of the last record in a table

I need help writing a C# Function using LINQ that will return me the ID of the last record from a table named Books in an SQL Server Database named MyLibrary.
I have named DbContext in my application MyLibraryDbContext.

I am using Entity Framework 6 (LINQ to Entities). The data is already in my application and can be retrieved using MyLibraryDbContext.

The function I need will look like something as below:

public int GetIdOfLastRecord()
{
MyLibraryDbContext context = new MyLibraryDbContext();

int ID;

// Code here

return ID;
}

Thank you for your help.
1
FaheemAhmadGul
Asked:
FaheemAhmadGul
  • 6
  • 6
  • 2
1 Solution
 
AndyAinscowFreelance programmer / ConsultantCommented:
http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_28415797.html

ps.  That is your previous question.

edit, appended:
Exactly what do you mean by last?  Is the table sorted in the way you require?
0
 
FaheemAhmadGulAuthor Commented:
Thank you for your comment.
I think this question is slightly different from my previous question. In my previous question, I wanted my Function to take a string parameter, then check if a record exists in the Books table that matches the string passed to it and return the ID of the record if it exists.
In my current question, I just want the ID of the last record from this table named Books. This new function does not take any parameters and just returns the ID of the last record whatever it is.
0
 
AndyAinscowFreelance programmer / ConsultantCommented:
I appreciate there is a difference.

Exactly what do you mean by last?  Is the table sorted in the way you require?
0
Cloud Class® Course: Microsoft Exchange Server

The MCTS: Microsoft Exchange Server 2010 certification validates your skills in supporting the maintenance and administration of the Exchange servers in an enterprise environment. Learn everything you need to know with this course.

 
FaheemAhmadGulAuthor Commented:
By last record I mean the most recently added record, that is the record with the highest ID. So if the table has just three records, the record with the ID =3 will be the last record. If you consider the table data shown in my previous question with a similar theme, the last record will be the record that has BookTitle Emma. I am supposing the data in the table is sorted based on ID field (record with ID = 1 being considered the first record).
0
 
AndyAinscowFreelance programmer / ConsultantCommented:
Something like this:
var CustID= BooksDBContext.Customers
                       .Where(p => p.max(ID))
                       .ID;
0
 
FaheemAhmadGulAuthor Commented:
I do not get any option like max after typing
   .Where(p => p.
0
 
AndyAinscowFreelance programmer / ConsultantCommented:
Does this work
var CustID= BooksDBContext.Customers.ID.Max();
0
 
FaheemAhmadGulAuthor Commented:
This does not work either.
0
 
FaheemAhmadGulAuthor Commented:
I did not think it would be such a difficult task. I am increasing the points to 200 now.
0
 
AndyAinscowFreelance programmer / ConsultantCommented:
I'm not having a good day, sorry.

Please try this - I was thinking too much in SQL in my first code.  (The following or similar will work when using a collection in C#, not to certain about LINQ to ENTITY though).

var CustID= BooksDBContext.Customers
                       .Where(p => p.ID.Max())
                       .ID;

If it doesn't work do you mean it doesn't compile or runs with an error or runs but not returns what you expect



ps.  I've done a google search and the following might be useful:
http://stackoverflow.com/questions/3299545/linq-to-entities-easy-to-find-max-value-in-sql-but-difficult-in-linq
0
 
Fernando SotoRetiredCommented:
Hi FaheemAhmadGul;

You can place the following code snippet in to the function and it should return the value you are looking for.

MyLibraryDbContext context = new MyLibraryDbContext();

var maxID = (from b in context.Books
             orderby b.ID descending
             select b.ID).FirstOrDefault( );

Open in new window

0
 
FaheemAhmadGulAuthor Commented:
This has worked perfectly. Thank you. I am very grateful. Regards, Faheem
0
 
Fernando SotoRetiredCommented:
Not a problem Faheem, glad I was able to help.
0
 
AndyAinscowFreelance programmer / ConsultantCommented:
Just don't forget the sorting may be very time consuming - it depends on how many records you are working with.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get expert help—faster!

Need expert help—fast? Use the Help Bell for personalized assistance getting answers to your important questions.

  • 6
  • 6
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now