C# 列表<;数据行>;到自定义列表<;模型>;

C# 列表<;数据行>;到自定义列表<;模型>;,c#,C#,我使用了以下代码: ManageUser userObj = new ManageUser(); List<StoreUserList> storeList = new List<StoreUserList>(); StoreUserList sl = new StoreUserList(); foreach (var items in userObj.GetStoreUserList(Username, Password)) { sl.UserName = it

我使用了以下代码:

ManageUser userObj = new ManageUser();
List<StoreUserList> storeList = new List<StoreUserList>();
StoreUserList sl = new StoreUserList();
foreach (var items in userObj.GetStoreUserList(Username, Password))
{
    sl.UserName = items[0].ToString();
    sl.EmailId = items[1].ToString();
    sl.FirstName = items[2].ToString();
    sl.LastName = items[3].ToString();
    sl.BadLoginCount = Convert.ToInt32(items[4]);
    sl.ManagerName = items[5].ToString();
    storeList.Add(sl);
}
ManageUser userObj=newmanageuser();
List storeList=新列表();
StoreUserList sl=新的StoreUserList();
foreach(userObj.GetStoreUserList(用户名、密码)中的var项)
{
sl.UserName=items[0].ToString();
sl.EmailId=items[1].ToString();
sl.FirstName=items[2].ToString();
sl.LastName=items[3].ToString();
sl.BadLoginCount=Convert.ToInt32(项目[4]);
sl.ManagerName=items[5].ToString();
storeList.Add(sl);
}
StoreUserList是我定义所有属性的模型。
ManagerUser是以列表形式返回数据的类

因此,为了填充模型类型的通用列表,我使用了上述代码。
但是,正如您所看到的,我已经硬编码了绑定模型的所有值,然后将该模型添加到列表中。我只是想知道有没有其他的方法,或者有什么神奇的方法可以轻松地做到这一点?

您可以将project用于。请参阅此处的更多详细信息:

这里:

您可以将project用于。请参阅此处的更多详细信息:

这里:

您可以将project用于。请参阅此处的更多详细信息:

这里:

您可以将project用于。请参阅此处的更多详细信息:


这里:

我认为您的代码不会在列表中添加多个StoreUserList对象,而是只添加一个值为last datarow的对象。你需要做的是

        ManageUser userObj = new ManageUser();
        List<StoreUserList> storeList = new List<StoreUserList>();
        StoreUserList sl = null;
        foreach (var items in userObj.GetStoreUserList(Username, Password))
        {
            sl = new StoreUserList();

            sl.UserName = items[0].ToString();
            sl.EmailId = items[1].ToString();
            sl.FirstName = items[2].ToString();
            sl.LastName = items[3].ToString();
            sl.BadLoginCount = Convert.ToInt32(items[4]);
            sl.ManagerName = items[5].ToString();
            storeList.Add(sl);
        }
ManageUser userObj=newmanageuser();
List storeList=新列表();
StoreUserList sl=null;
foreach(userObj.GetStoreUserList(用户名、密码)中的var项)
{
sl=新的StoreUserList();
sl.UserName=items[0].ToString();
sl.EmailId=items[1].ToString();
sl.FirstName=items[2].ToString();
sl.LastName=items[3].ToString();
sl.BadLoginCount=Convert.ToInt32(项目[4]);
sl.ManagerName=items[5].ToString();
storeList.Add(sl);
}

否则,我看不到您的代码中有任何问题。

我认为您的代码不会在列表中添加多个StoreUserList对象,而是只添加一个值为last datarow的对象。你需要做的是

        ManageUser userObj = new ManageUser();
        List<StoreUserList> storeList = new List<StoreUserList>();
        StoreUserList sl = null;
        foreach (var items in userObj.GetStoreUserList(Username, Password))
        {
            sl = new StoreUserList();

            sl.UserName = items[0].ToString();
            sl.EmailId = items[1].ToString();
            sl.FirstName = items[2].ToString();
            sl.LastName = items[3].ToString();
            sl.BadLoginCount = Convert.ToInt32(items[4]);
            sl.ManagerName = items[5].ToString();
            storeList.Add(sl);
        }
ManageUser userObj=newmanageuser();
List storeList=新列表();
StoreUserList sl=null;
foreach(userObj.GetStoreUserList(用户名、密码)中的var项)
{
sl=新的StoreUserList();
sl.UserName=items[0].ToString();
sl.EmailId=items[1].ToString();
sl.FirstName=items[2].ToString();
sl.LastName=items[3].ToString();
sl.BadLoginCount=Convert.ToInt32(项目[4]);
sl.ManagerName=items[5].ToString();
storeList.Add(sl);
}

否则,我看不到您的代码中有任何问题。

我认为您的代码不会在列表中添加多个StoreUserList对象,而是只添加一个值为last datarow的对象。你需要做的是

        ManageUser userObj = new ManageUser();
        List<StoreUserList> storeList = new List<StoreUserList>();
        StoreUserList sl = null;
        foreach (var items in userObj.GetStoreUserList(Username, Password))
        {
            sl = new StoreUserList();

            sl.UserName = items[0].ToString();
            sl.EmailId = items[1].ToString();
            sl.FirstName = items[2].ToString();
            sl.LastName = items[3].ToString();
            sl.BadLoginCount = Convert.ToInt32(items[4]);
            sl.ManagerName = items[5].ToString();
            storeList.Add(sl);
        }
ManageUser userObj=newmanageuser();
List storeList=新列表();
StoreUserList sl=null;
foreach(userObj.GetStoreUserList(用户名、密码)中的var项)
{
sl=新的StoreUserList();
sl.UserName=items[0].ToString();
sl.EmailId=items[1].ToString();
sl.FirstName=items[2].ToString();
sl.LastName=items[3].ToString();
sl.BadLoginCount=Convert.ToInt32(项目[4]);
sl.ManagerName=items[5].ToString();
storeList.Add(sl);
}

否则,我看不到您的代码中有任何问题。

我认为您的代码不会在列表中添加多个StoreUserList对象,而是只添加一个值为last datarow的对象。你需要做的是

        ManageUser userObj = new ManageUser();
        List<StoreUserList> storeList = new List<StoreUserList>();
        StoreUserList sl = null;
        foreach (var items in userObj.GetStoreUserList(Username, Password))
        {
            sl = new StoreUserList();

            sl.UserName = items[0].ToString();
            sl.EmailId = items[1].ToString();
            sl.FirstName = items[2].ToString();
            sl.LastName = items[3].ToString();
            sl.BadLoginCount = Convert.ToInt32(items[4]);
            sl.ManagerName = items[5].ToString();
            storeList.Add(sl);
        }
ManageUser userObj=newmanageuser();
List storeList=新列表();
StoreUserList sl=null;
foreach(userObj.GetStoreUserList(用户名、密码)中的var项)
{
sl=新的StoreUserList();
sl.UserName=items[0].ToString();
sl.EmailId=items[1].ToString();
sl.FirstName=items[2].ToString();
sl.LastName=items[3].ToString();
sl.BadLoginCount=Convert.ToInt32(项目[4]);
sl.ManagerName=items[5].ToString();
storeList.Add(sl);
}

否则,我看不到您的代码中有任何问题。

如果您可以稍微修改
ManageUser.GetStoreUserList
以返回
DataTable
,而不是
List
,那么您可以使用Automapper,它可以将
IDataReader
实现映射到对象集合

假设您有以下实体类型:

class User
{
    public int Id { get; set; }
    public string Name { get; set; }
}
然后,您可以通过以下方式将
数据表
转换为
列表

        // sample data table
        var dataTable = new DataTable();

        dataTable.Columns.Add("Id", typeof(int));
        dataTable.Columns.Add("Name", typeof(string));

        dataTable.Rows.Add(1, "John");
        dataTable.Rows.Add(2, "Mary");
        dataTable.Rows.Add(3, "Peter");
        dataTable.Rows.Add(4, "Sarah");

        // fill users list
        using (var reader = dataTable.CreateDataReader())
        {
            var users = Mapper.Map<IDataReader, List<User>>(reader);
        }
//示例数据表
var dataTable=新的dataTable();
dataTable.Columns.Add(“Id”,typeof(int));
dataTable.Columns.Add(“Name”,typeof(string));
dataTable.Rows.Add(1,“John”);
dataTable.Rows.Add(2,“Mary”);
添加(3,“Peter”);
添加(4,“Sarah”);
//填写用户列表
使用(var reader=dataTable.CreateDataReader())
{
var users=Mapper.Map(读取器);
}

如果可以稍微修改
ManageUser.GetStoreUserList
以返回
DataTable
而不是
List
,则可以使用Automapper,它可以将
IDataReader
实现映射到对象集合

假设您有以下实体类型:

class User
{
    public int Id { get; set; }
    public string Name { get; set; }
}
然后,您可以通过以下方式将
数据表
转换为
列表

        // sample data table
        var dataTable = new DataTable();

        dataTable.Columns.Add("Id", typeof(int));
        dataTable.Columns.Add("Name", typeof(string));

        dataTable.Rows.Add(1, "John");
        dataTable.Rows.Add(2, "Mary");
        dataTable.Rows.Add(3, "Peter");
        dataTable.Rows.Add(4, "Sarah");

        // fill users list
        using (var reader = dataTable.CreateDataReader())
        {
            var users = Mapper.Map<IDataReader, List<User>>(reader);
        }
//示例数据表
var dataTable=新的dataTable();
dataTable.Columns.Add(“Id”,typeof(int));