【问题标题】:Runtime want to get dynamic list from string运行时想要从字符串中获取动态列表
【发布时间】:2012-11-13 14:19:13
【问题描述】:

我有一个 List<string> 包含列名和相应的数据类型

假设我的列表是:

List<string> oList = { 
             "Name-Varchar", 
             "UserID-int", 
             "Address-Varchar", 
             "DBO-Date", 
             "Salary-Money" };

使用上面的List 想要创建一个具有属性的动态列表 Name,UserID,Address,DBO,Salary 然后想通过DB表信息填充这个列表。要使用这个列表可能需要创建实例。

  1. 在运行时想要创建动态列表。
  2. 按 DB 值填充列表。
  3. 全局声明此列表,因此需要创建该列表的实例。

这可能吗?

如果可以的话,我应该怎么做呢?

请提供一些可行的语法。如果您有任何疑问,请询问。

【问题讨论】:

    标签: c# .net code-generation dynamic-list


    【解决方案1】:

    如何为列表项创建一个自定义类,然后为从数据库中检索到的每一行添加一个?

    public class Employee
    {
        string Name { get; set; }
        string UserID { get; set; }
        string Address { get; set; }
        string DBO { get; set; }
        string Salary { get; set; }
    }
    

    创建您的列表

    List<Employee> lstEmployees = new List<Employee>;
    

    然后在循环中添加每个项目(假设它在 DataTable 中):

    foreach (DataRow row in dt)
    {
        Employee e = new Employee();
        e.Name = row["name"];
        e.UserID = row["userid"];
        e.Address = row["address"];
        e.DBO = row["dbo"];
        e.Salary = row["salary"];
        lstEmployees.Add(e);
    }
    

    【讨论】:

    • Sid Holland 感谢您的回复,我熟悉您的上述语法,但我想要不同的东西,我不想创建任何物理文件名“员工”想在运行时创建此类然后执行您在语法中描述的其余内容。再次感谢您的回复。
    • 我不确定我是否理解。当您从数据库中读取值并根据检索到的内容进行设置时,这在运行时创建对象。
    • 感谢 Sid Holland 提供的宝贵信息,如果您有任何想法或线索,请与我们分享。再次感谢
    【解决方案2】:

    不太确定你想要什么......但试试这个

    List<Dictionary<string,object>> YourList = new List<Dictionary<string,object>>();
    
    foreach (DataRow row in dt)
    {
        Dictionary<string,object> e = new Dictionary<string,object>();
        e["name"] = row["name"];
        e["userid"] = row["userid"];
        e["address"] = row["address"];
        e["dbo"] = row["dbo"];
        e["salary"] = row["salary"];
        YourList.Add(e);
    }
    

    虽然我不认为这是一个好主意!

    请更清楚地描述您的目标,以便给出更好的答案...

    【讨论】:

    • Yahia 感谢您的回复,我有一个应用程序需要执行动态查询。我知道如何执行此动态查询,但执行后需要将此结果存储在列表中。我不知道如何创建此动态列表包含在查询中定义或指定的属性作为列。需要帮助编写动态列表,在运行时创建。谢谢。
    • @shamim 你的描述还不清楚......该列表将如何准确使用?
    • 要使用这个列表需要在运行时创建实例。假设在我的项目中有一个类包含几个属性,要访问这个类作为一个列表需要声明泛型列表,然后我们创建一个实例然后访问列表。现在我不想要这个静态类,想在创建这个类之后在运行时创建这个类想要创建实例来访问这个列表。现在如果你对我的需求有任何模糊,请指出哪些信息对你有帮助了解我的需要。谢谢
    • @shamim 对不起,但你只是在描述“如何”而不是“你的目标是什么”......这样我无能为力:-(
    • Yahia,希望这个描述帮助你理解,为什么我需要你的帮助。我的应用程序有一个搜索页面,用户可以搜索与项目相关的任何东西,当我使用 Ado.net 框架时,我创建一个能够运行动态查询的 sp 然后只捕获输出并构建数据表并解决问题,但目前我使用 EF(实体框架工作),在这里我执行动态查询,这不是问题,但问题是之后执行查询将输出放在哪里
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    相关资源
    最近更新 更多