Q:

create new property in new object from linq

so I am doing a linq-to-sql query and the results come as an IEnumerable.   From this list I am creating a new object for each result that is returned.   The stored procedure that I am using already is returning the objects in the order that I want.    We have a leader board and the results are in descending order after the query.  the part I am having problems with is I want to add the ranking into a new property in the new object. 
say I have this code
 var usersSummary = Context.[myStoredProcedure]
            return usersSummary. Select(x => new [myObject]
            {
                UserId = x.UserID,
                FirstName = x.FirstName,
                LastName = x.LastName,
                TotalPoints = x.TotalPoints,
                LeaderBoardRank = //this part here
                Email = x.Email,
                CreatedDate = x.CreatedDate
            }).OrderByDescending(x => x.TotalPoints).ToList();

I would like the LeaderBoardRank to be their ranking.   They are already sorted in ranking order , so the first object would be 1 , the next 2 , and so on.   Since this is not a normal c# loop im not too sure how to fill this property with the ranking. 

A:

Select as an overload with an index that you can use. 
    var usersSummary = Context.[myStoredProcedure]
        return usersSummary. Select((x, i) => new [myObject]
        {
            UserId = x.UserID,
            FirstName = x.FirstName,
            LastName = x.LastName,
            TotalPoints = x.TotalPoints,
            LeaderBoardRank = i
            Email = x.Email,
            CreatedDate = x.CreatedDate
        }).OrderByDescending(x => x.TotalPoints).ToList();

Is the object you're creating already the object you have in your list?  In this case you don't have to create a new object but just assign the value to the existing one:
    var usersSummary = Context.[myStoredProcedure]
        return usersSummary. Select((x, i) => 
            {
                x.LeaderBoardRank = i;
                return x;
            }).OrderByDescending(x => x.TotalPoints).ToList();

Also if your list is already ordered there's no need to order it again.  The order will not be changed by your select statement. 

A:

If by "new property" you mean that LeaderBoardRank id NOT a property of myObject then no, you can't do that.   You either need to define another class (possibly that extends MyObject) or use an anonymous type, either with that additional property or with two properties - the rank and the object. 
If LeaderBoardRank is already a property and you want to add the rank of the sorted result, you can do it this way:
var usersSummary = Context.[myStoredProcedure];

return usersSummary. OrderByDescending(x => x.TotalPoints)
                   .Select((x, i) => new [myObject]
{
    UserId = x.UserID,
    FirstName = x.FirstName,
    LastName = x.LastName,
    TotalPoints = x.TotalPoints,
    LeaderBoardRank = i
    Email = x.Email,
    CreatedDate = x.CreatedDate
}).ToList();

Note that this does NOT account for ties - meaning if two users have the same total points they will not have the same rank. 