Chris H.
Chris H.

Reputation: 151

Looping through a list using foreach

I have a project that requires me to populate User information along with their personal information. So far, I was able to loop through a list of users and personal information, but I was not able to populate null values.

For example:

public List<UserDetailModel> UserInformation()
{
    List<UserDetailModel> userdetails = new List<UserDetailModel>();

    var user = _context.User.Where(x => x.Id > 0).ToList()

    foreach(var item in user)
    {
        var personaldetails = _context.PersonalDetails.Where(x => item.PId == x.PId).ToList();

        foreach (var item2 in personaldetails)
        {
            UserDetailModel userModel = new UserDetailModel();

            userModel.UserId = item.UserId;
            userModel.Name = item.UserName;
            userModel.PhoneNumber = item.Number;

            userModel.CreditCardNumber = item2.CCNumber;
            userModel.SIN = item2.SinNumber;

            userdetails.Add(userModel);
        }
    }
    return userdetails;
}

What I'm expecting is:

"userId": 1,
"name": "john"
"phoneNUmber": 123-123-1234,
"creditCardNumber": 44455544445554545,
"sin": 9589898568

"userId": 1,
"name": "john"
"phoneNUmber": ,
"creditCardNumber": 44455544445554545,
"sin": 9589898568


"userId": 1,
"name": "john"
"phoneNUmber": 123-123-1234,
"creditCardNumber": ,
"sin": 9589898568


"userId": 1,
"name": "john"
"phoneNUmber": 123-123-1234,
"creditCardNumber": 44455544445554545,
"sin": 

But what I'm getting with the above code is:

"userId": 1,
"name": "john"
"phoneNUmber": 123-123-1234,
"creditCardNumber": 44455544445554545,
"sin": 9589898568

How can I get all users along with their null values?

Upvotes: 2

Views: 239

Answers (1)

Ranjith.V
Ranjith.V

Reputation: 326

I guess the logic was not implemented correctly, Two loops not required seems,

Public List<UserDetailModel> UserInformation(){

List<UserDetailModel> userdetails = new List<UserDetailModel>();

var user = (from user in _context.User 
           join personal in _context.PersonalDetails 
           on user.PId equals personal.PId 
           Where user.Id>0).ToList();

foreach(var item in user)
{
     UserDetailModel userModel = new UserDetailModel();

        userModel.UserId = item.UserId;
        userModel.Name = item.UserName;
        userModel.PhoneNumber = item.Number;

        userModel.CreditCardNumber = item2.CCNumber;
        userModel.SIN = item2.SinNumber;

        userdetails.Add(userModel);
}

So when personal details null it won't enter in the loop.

Upvotes: 1

Related Questions