无法将类型'System.Collections.Generic.List <system.data.datarow>'隐式转换为'System.Collections.Generic.List <string>'</string> </system.data.datarow>

时间:2014-04-04 09:43:05

标签: c# asp.net .net list

我有以下代码:

   List<String> rows = 
     allDetails.Tables[3].AsEnumerable().OrderBy(dr => dr.Field<string>  ("JobTitle")).ToList();

错误是:

Cannot implicitly convert type 'System.Collections.Generic.List<System.Data.DataRow>' to 'System.Collections.Generic.List<string>'

1 个答案:

答案 0 :(得分:6)

DataTable.AsEnumerable()会返回IEnumerable<DataRow>,您可以将其用于与您类似的LINQ查询。但是你不能在其上使用ToList并期望它是List<String>。因此,您必须选择字符串字段:

List<String> orderedJobTitles = allDetails.Tables[3].AsEnumerable()
    .OrderBy(dr => dr.Field<string>("JobTitle"))
    .Select(dr => dr.Field<string>("JobTitle"))
    .ToList();

如果您不需要DataRow,也可以在订购之前选择字段:

List<String> orderedJobTitles = allDetails.Tables[3].AsEnumerable()
    .Select(dr => dr.Field<string>("JobTitle"))
    .OrderBy(jobTitle => jobTitle)
    .ToList();