IEnumerable EnumerableRowCollection 之间的转换

Posted

技术标签:

【中文标题】IEnumerable EnumerableRowCollection 之间的转换【英文标题】:Conversion between IEnumerable EnumerableRowCollection 【发布时间】:2019-12-29 18:50:50 【问题描述】:

我有以下代码:

var aaData = myapi.GetData().AsEnumerable().Select(x => new 
                Id = x["myID"],
                Desc = x["myDesc"]                   
            );

尝试执行以下操作

aaData = aaData.OrderBy((string.Join(",", request.Order
.Select(x => request.Columns[x.Column].Data + " " + x.Dir))));

得到错误:

CS0266 无法将类型“System.Collections.Generic.IEnumerable”隐式转换为“System.Data.EnumerableRowCollection”。存在显式转换(您是否缺少演员表?)

如何解决这个问题?

GetData 返回一个数据表

Request 是一个具有属性的对象:

public OrderCol[] Order  get; set; 

OrderCol 是

public class OrderCol 
            public int Column  get; set; 
            public string Dir  get; set; 
        

感谢您的帮助。

上面的代码适用于我返回 List 而不是 DataTable 的情况。该错误表明需要 Cast 并且它似乎是 DataTable.AsEnumerable 设置为 EnumerableRowCollection 的方式

可以使用模拟数据表来模拟上述情况

DataTable dt = new DataTable();
 dt.clear();
 dt.Columns.Add("myID");
 dt.Columns.Add("myDesc");

【问题讨论】:

什么是myapi.GetData(),什么是request 请给我们'myapi.GetData()'和'request'的数据结构。 抱歉,GetData 返回一个DataTable。 还有Request? 编辑了我原来的帖子。希望它现在拥有所有必要的信息 【参考方案1】:

我只需要转换为列表,一切正常

【讨论】:

以上是关于IEnumerable EnumerableRowCollection 之间的转换的主要内容,如果未能解决你的问题,请参考以下文章

从 IEnumerable 转换为 IEnumerable<object>

将 IEnumerable<Ienumerable<T>> 转换为 Dictionary<key,IEnumerable<T>>

如何将多个 IEnumerable<IEnumerable<T>> 列表添加到 IEnumerable<List<int>>

通过反射动态修改 IEnumerable 属性

IEnumerable,IQueryable之前世今生

如何将两个 IEnumerable<T> 连接成一个新的 IEnumerable<T>?