使用 foreach 遍历列表

Posted

技术标签:

【中文标题】使用 foreach 遍历列表【英文标题】:Looping through a list using foreach 【发布时间】:2019-05-09 00:38:29 【问题描述】:

我有一个项目需要我填写用户信息及其个人信息。 到目前为止,我能够遍历用户和个人信息列表,但无法填充空值。

例如:

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;

我期待的是:

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

但是我用上面的代码得到的是:

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

如何获取所有用户及其 null 值?

【问题讨论】:

你能提供_context.User_context.PersonalDetails中包含的模型的实现吗?我还假设您正在使用实体框架? 您正在查找 id 不为 null 的所有用户(这没有意义,为什么用户没有 ID),然后对于每个用户,您正在查找 id 所在的所有 PersonalDetails不为空,我的意思是,如果你对自己说,它甚至听起来都不对。那你问How can I get all users along with their null values什么空值?请花一些时间正确地描述您的架构以及您希望以通用且特定的语言实现的目标 你有使用输入数据的例子吗? 我刚刚更新了我的代码。 你的函数没有返回任何东西,但它应该返回。你的代码真的运行了吗?直接从上下文返回 UserDetailModel 列表而不是 PersonalDetails 列表有什么意义? 【参考方案1】:

我猜逻辑没有正确实现,似乎不需要两个循环,

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

因此,当个人详细信息为空时,它不会进入循环。

【讨论】:

以上是关于使用 foreach 遍历列表的主要内容,如果未能解决你的问题,请参考以下文章

c:forEach 不遍历 TabView 中的列表

c#用foreach遍历数组、列表时是直接获得数据元素,而foreach哈希表时,为啥获得的是命名空间名??

SwiftUI 使用 List 和 Foreach 遍历字典中的键并创建列表视图

foreach 循环不会遍历列表中的所有项目 - C#

PowerShell 中的嵌套 ForEach()

foreach