Curious-programmer
Curious-programmer

Reputation: 813

Get product of items in list C# linq

I have a list with people with integerIds who share Tokens I am trying to get the products of each pair of friends id numbers. so friend id 2 and 4 would result in 8 etc.

 var FriendsWhoShareTheMostTokens = FriendsWithTheirSharedTokensAmount.Select(x => new
            {
               FriendIdA = x.FriendTo.FriendID,
               FriendIdB  = x.FriendFor.FriendID,
               SharedCountNumber = x.SharedCount
            })
            .Where(x => x.SharedCountNumber == FriendsWithTheirSharedTokensAmount.Max(y => y.SharedCount))
            .ToList();

// need some code here** 
foreach (var pairOffriendsWhoSharetheMostTokens in FriendsWhoShareTheMostTokens)
{  

}

Can I accomplish this with Linq or what is the best way to accomplish this?

Upvotes: 3

Views: 1420

Answers (2)

TheGeneral
TheGeneral

Reputation: 81543

It's really hard to understand what you are trying to achieve with your example.

However, if you want to have the id's and the product, and also obtain the highest SharedCountNumber.

You can probably just do the following

var someResult = someList.Select(x => new
                            {
                                FriendIdA = x.FriendTo.FriendID,
                                FriendIdB = x.FriendFor.FriendID,
                                SharedCountNumber = x.FriendTo.FriendID * x.FriendFor.FriendID    
                            }) // Projection
                          .OrderByDescending(x => x.SharedCountNumber) // order the list
                          .FirstOrDefault(); // get the first

if (someResult != null)
{
    Debug.WriteLine($"A : {someResult.FriendIdA}, B : {someResult.FriendIdB}, Product : {someResult.SharedCountNumber}");
}

Upvotes: 1

Curious-programmer
Curious-programmer

Reputation: 813

Edit

The answer is simple

 var ProductofGreatestTokenSharers = FriendsWhoShareTheMostTokens.Select(x => new
            {
                ProductOfIds = x.FriendIdA * x.FriendIdB
            }
        );

Upvotes: 2

Related Questions