转换<;列表<;列表<;对象>>;至<;列表<;列表<;字符串>>;
本文关键字:lt gt 列表 字符串 转换 对象 | 更新日期: 2023-09-27 18:26:30
我为windows phone 8.1做应用程序,现在我需要将List(List(object))转换为List(List(string))。。。
public List<List<string>> ExecuteScalarEx()
{
if (_conn.Trace)
{
Debug.WriteLine("Executing Query: " + this);
}
List<List<object>> result = new List<List<object>>();
List<List<string>> stringList = new List<List<string>>();
var stmt = Prepare();
while (SQLite3.Step(stmt) == SQLite3.Result.Row)
{
int columnCount = SQLite3.ColumnCount(stmt);
List<object> row = new List<object>();
for (int i = 0; i < columnCount; i++)
{
var colType = SQLite3.ColumnType(stmt, i);
object val = ReadColEx(stmt, i, colType);
row.Add(val);
}
result.Add(row);
}
//*** I NEED CONVERT HERE! ****
//stringList = ....;
return stringList;
}
有什么想法吗?提前感谢!:)
我假设List.ConvertAll
可用,不是吗?
List<List<string>> stringList = result.ConvertAll(
list => list.ConvertAll(obj => (obj ?? "").ToString()));
在这种情况下(您现在已经提供了代码),首先应该从List<List<string>>
开始。
您可以使用普通的Linq,但Tim的解决方案更简洁:
using System.Linq;
....
List<List<string>> stringList = result.Select(
lst => lst.Select(o => (o ?? "").ToString()).ToList()
).ToList()
当然,您可以首先将DB值读取为字符串。。。
public List<List<string>> ExecuteScalarEx()
{
if (_conn.Trace)
{
Debug.WriteLine("Executing Query: " + this);
}
List<List<string>> stringList = new List<List<string>>();
var stmt = Prepare();
while (SQLite3.Step(stmt) == SQLite3.Result.Row)
{
int columnCount = SQLite3.ColumnCount(stmt);
List<string> row = new List<string>();
for (int i = 0; i < columnCount; i++)
{
var colType = SQLite3.ColumnType(stmt, i);
string val = (ReadColEx(stmt, i, colType) ?? "").ToString();
row.Add(val);
}
stringList.Add(row);
}
return stringList;
}