通过LINQ获取字符串列表

时间:2013-08-22 19:57:28

标签: c# linq

我正在尝试在下面的代码中获取一个字符串列表的列表,并且我在select上看到:

  

无法隐式转换类型   'System.Data.EnumerableRowCollection>'   至   'System.Collections.Generic.List>'

List<List<string>> rows = (from myRow in data.AsEnumerable()
                            select new List<string> {myRow["FirstName"].ToString(),
                                myRow["LastName"].ToString(),
                                myRow["Department"].ToString(),
                                myRow["Birthdate"].ToString(),
                                myRow["Description"].ToString()
                            });

如何获取字符串列表的列表?

2 个答案:

答案 0 :(得分:5)

Linq正在使用enumerables(IEnumerable)。您需要转换为列表:

List<List<string>> rows = (from myRow in data.AsEnumerable()
                            select new List<string> {myRow["FirstName"].ToString(),
                                myRow["LastName"].ToString(),
                                myRow["Department"].ToString(),
                                myRow["Birthdate"].ToString(),
                                myRow["Description"].ToString()
                            }).ToList();

答案 1 :(得分:2)

方法语法更简洁:

List<List<string>> rows = data.AsEnumerable()
    .Select(r => r.ItemArray.Select(o => o + "").ToList())
    .ToList();

“half”查询语法:

rows = (from row in data.AsEnumerable()
        select row.ItemArray.Select(o => o + "").ToList())
       .ToList();