繁体   English   中英

表到字典 <String,Object> 使用Lambda表达式

[英]Table To Dictionary <String,Object> using Lambda Expression

我正在尝试将数据表转换为包含字符串和对象的字典,该对象通过方法返回

public class myObj
    {
        public string Sid { get; set; }
        public string Serial { get; set; }
        public Double RunTime { get; set; }
        public string Username { get; set; }
        public string LogonTime { get; set; }
        public string SqlText { get; set; }
        public string Database { get; set; }
        public bool Terminated { get; set; }

        public myObj Obj(DataRow row)
        {

            myObj Session = new myObj();
            myObj.Sid = row["SID"].ToString();
            myObj.Serial = row["SERIAL#"].ToString();
            myObj.Username = row["USERNAME"].ToString();
            myObj.RunTime = Convert.ToDouble(row["RUN_TIME"].ToString());
            myObj.LogonTime = row["LOGON_TIME"].ToString();
            myObj.SqlText =  row["SQL_FULLTEXT"].ToString();
            myObj.Database = row["DATABASE"].ToString();
            return Session ;
        }
    }

Dictionary<string, Dictionary<string,myObj >> result = table.AsEnumerable().ToDictionary(row => row["USERNAME"].ToString() + "|" + row["SQL_FULLTEXT"].ToString(), row => (这里我需要引用Obj(Datarow row)方法,并传递该行以获取返回的对象,以使字典具有

我想通过Lambda表达式来做到这一点。 我能够通过使用Dictionary.Add循环执行此操作

public class myObj
    {
        public string Sid { get; set; }
        public string Serial { get; set; }
        public Double RunTime { get; set; }
        public string Username { get; set; }
        public string LogonTime { get; set; }
        public string SqlText { get; set; }
        public string Database { get; set; }
        public bool Terminated { get; set; }

        public myObj()
        {
        }
        public myObj(DataRow row)
        {

            myObj Session = new myObj();
            myObj.Sid = row["SID"].ToString();
            myObj.Serial = row["SERIAL#"].ToString();
            myObj.Username = row["USERNAME"].ToString();
            myObj.RunTime = Convert.ToDouble(row["RUN_TIME"].ToString());
            myObj.LogonTime = row["LOGON_TIME"].ToString();
            myObj.SqlText =  row["SQL_FULLTEXT"].ToString();
            myObj.Database = row["DATABASE"].ToString();
            return Session ;
        }
    }

    Dictionary<myObj,string > result =
                    table.AsEnumerable()
                        .ToDictionary(
                            row => new myObj(row), row => row["USERNAME"].ToString() + "|" + row["SQL_FULLTEXT"].ToString());

您可以使用Dictionary.Add来做到这一点,但不能使用ToDictionary。 原因是ToDictionary确实允许您更改指定键选择器函数的'row => row [“ USERNAME”]。ToString()+“ |” +行[“SQL_FULLTEXT”]。的ToString()”你的情况,但它不会让你改变底层的枚举类型。

您只能使用ToDictionary()创建类型为Dictionary <T, DataRow>字典(假设表的类型为DataTable);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM