gpt4 book ai didi

c# - 从数据库填充类

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

这是目前的方法。

public static void FillUserListClass()
{
List<User> UserList = new List<User>();
OleDbConnection conn = new OleDbConnection(strAccessConn);
string query = "SELECT ControlNumber, UserName FROM Log WHERE Log.EndStatus in ('Needs Review', 'Check Search', 'Vision Delivery', 'CA Review', '1TSI To Be Delivered');";

OleDbDataAdapter adapter = new OleDbDataAdapter(query, conn);
DataTable dt = new DataTable();

try
{
adapter.Fill(dt);

for (int ctr = 1; ctr <= dt.Rows.Count; ctr++)
{
UserList.UserName.Add(dt.Columns["UserName"].ToString());
UserList.ControlNumber.Add(Convert.ToInt32(dt.Columns["ControlNumber"]));
}
}
catch (OleDbException ex)
{}
finally
{
conn.Close();
}
}

我想做的是使用我的查询获取 ControlNumber 和用户名,并为每个用户名创建一个唯一的类。每个用户类

class User
{
public string UserName { get; set; }
public List<Int32> ControlNumber { get; set; }
}

将包含用户名 (username) 和我使用查询提取的控制编号 (controlNumbers) 列表。

最佳答案

您也可以使用 LINQ 轻松完成此操作,它更易于阅读且更简洁:

var users = from c in dt.AsEnumerable()
group c by c.Field<string>("UserName") into gr
select new User { Username= gr.Key ,
ControlNumbers = (from x in dt.AsEnumerable()
where x.Field<string>("UserName") == gr.Key
select x.Field<int>("ControlNumber")).ToList() };

更新:

List<User> userList = (from c in dt.AsEnumerable()
group c by c.Field<string>("UserName") into gr
select
new User {
Username= gr.Key ,
ControlNumbers =
(from x in dt.AsEnumerable()
where x.Field<string>("UserName") == gr.Key
select x.Field<int>("ControlNumber")).ToList()
}
).ToList();

基本上,您正在获取数据表,按用户名分组并使用此唯一用户名列表再次查询数据表,以读取与当前用户名相关的所有控制编号。

关于c# - 从数据库填充类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16820714/

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