表到词典<;字符串,对象>;使用Lambda表达式
本文关键字:gt 对象 使用 Lambda 表达式 字符串 lt | 更新日期: 2023-09-27 18:23:56
我正在尝试将数据表转换为包含字符串和对象的字典,对象通过方法返回
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循环来完成这项工作。添加
您可以使用Dictionary.Add来完成此操作,但不能使用ToDictionary。原因是ToDictionary确实允许您更改。在您的情况下,指定键选择器函数'row=>row["USERNAME"].ToString()+"|"+row["SQL_FULLTEXT"].ToString()',但它确实不允许您更改底层可枚举类型。
您只能使用ToDictionary()创建dictionary <T, DataRow>
类型的字典(假设表的类型为DataTable);
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());