gpt4 book ai didi

c# - 从数据表创建列表到列表

转载 作者:太空宇宙 更新时间:2023-11-03 23:41:09 24 4
gpt4 key购买 nike

我已经通过一些示例将数据表转换为列表。我正在使用这段代码:

foreach (var dataRow in userDetails.AsEnumerable())
{
TUser user = (TUser)Activator.CreateInstance(typeof(TUser));
user.Id = dataRow.Field<Guid>("Id");
user.UserName = dataRow.Field<string>("Username");
user.Password = dataRow.Field<string>("Password");
users.Add(user); // Users is list
}

现在,当我想通过 join 包含一个用户角色时,我得到以下结果(因为一个用户可以有很多角色)。

    Id     | Username       | Password | RoleId | RoleName
-------------------------------------------------------------
4557 | test@gmail.com | Test | 2 | Admin
4557 | tset@gmail.com | Test | 3 | User

我想将用户详细信息转换为带有角色列表的列表。有什么方法可以实现吗?实际上,在 Entity Framework 中,它是自动出现的。我怎么能那样做?

Class user{
public int Id {get;set;}
public int Name{get;set;} etc...
public List<Role> Roles{get;set;}
}

还是我的sql结果有误?如果是这样,请提供替代方案。 我正在使用 ms-sql。

最佳答案

这里假设 roles是 LINQ 为角色表生成的类的实例。如果由于某种原因不能在代码中使用 LINQ,只需将它们更改为 Activator.CreateInstanceField<type>在适当情况下。当然,如果你毕竟可以使用 LINQ/EF,你可以从一开始就使用它们 userDetails并跳过所有丑陋的Field<fieldName> .

foreach (var dataRow in userDetails.AsEnumerable())
{
TUser user = (TUser)Activator.CreateInstance(typeof(TUser));
user.Id = dataRow.Field<Guid>("Id");
user.UserName = dataRow.Field<string>("Username");
user.Password = dataRow.Field<string>("Password");

users.Roles = roles.Where(r=>r.UserId = user.Id)
.Select(r=>new Roles(ID=r.RoleId,Name=r.RoleName).ToList()

users.Add(user); // Users is list
}

关于c# - 从数据表创建列表到列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28982061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com