转换<;列表<;列表<;对象>>;至<;列表<;列表<;字符串>>;

本文关键字: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;
}