泛型类型的Linq类型转换(Linq type conversion on generic types)

编程入门 行业动态 更新时间:2024-10-25 22:24:21
泛型类型的Linq类型转换(Linq type conversion on generic types)

我找到了这个代码,但即使我尝试了很多转换后它也无法运行。 基本上它巧妙地将Datatable转换为可序列化的List。

错误是它无法将Dictionary<string, object>转换为List<object> :

public GridBindingData GetSomething() { DataTable dt = GetDatatable(); var columns = dt.Columns.Cast<System.Data.DataColumn>(); var data = dt.AsEnumerable() .Select(r => columns.Select(c => new { Column = c.ColumnName, Value = r[c] }) .ToDictionary(i => i.Column, i => i.Value != System.DBNull.Value ? i.Value : null)) .ToList<object>(); return new GridBindingData() { Data = data , Count = dt.Rows.Count }; }

我尝试了很多转换,包括:

List<object> newdata = (List<object>)data.AsEnumerable().Cast<object>();

基本上,GridBindingData的Data属性必须具有List<object> 。 那可能吗?

I have this code I found but it doesnt work even after i tried many conversions. Basically it converts smartly a Datatable into a List that can be serializable.

The error is that it can't convert a Dictionary<string, object> to a List<object>:

public GridBindingData GetSomething() { DataTable dt = GetDatatable(); var columns = dt.Columns.Cast<System.Data.DataColumn>(); var data = dt.AsEnumerable() .Select(r => columns.Select(c => new { Column = c.ColumnName, Value = r[c] }) .ToDictionary(i => i.Column, i => i.Value != System.DBNull.Value ? i.Value : null)) .ToList<object>(); return new GridBindingData() { Data = data , Count = dt.Rows.Count }; }

I tried many conversions including:

List<object> newdata = (List<object>)data.AsEnumerable().Cast<object>();

Basicaly, the Data property of GridBindingData must have a List<object>. Is that possible?

最满意答案

嗯。 要看到你得到的错误并不容易,但也许你需要.Cast<object>().ToList() :

var data = dt.AsEnumerable() .Select(r => columns.Select(c => new { Column = c.ColumnName, Value = r[c] }) .ToDictionary(i => i.Column, i => i.Value != System.DBNull.Value ? i.Value : null)) .Cast<object>() .ToList();

编辑这应该完美无缺,在REPL中测试:

csharp> new Dictionary<string, string> { {"key","value"} }.ToList().Cast<object>(); { [key, value] } csharp> new Dictionary<string, string> { {"key","value"} }.Cast<object>().ToList(); { [key, value] }

Mmm. It's not easy to see what error you are getting, but perhaps you need .Cast<object>().ToList():

var data = dt.AsEnumerable() .Select(r => columns.Select(c => new { Column = c.ColumnName, Value = r[c] }) .ToDictionary(i => i.Column, i => i.Value != System.DBNull.Value ? i.Value : null)) .Cast<object>() .ToList();

Edit this should work flawlessly, tested in the REPL:

csharp> new Dictionary<string, string> { {"key","value"} }.ToList().Cast<object>(); { [key, value] } csharp> new Dictionary<string, string> { {"key","value"} }.Cast<object>().ToList(); { [key, value] }

更多推荐

本文发布于:2023-08-04 14:25:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1415629.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:类型   Linq   type   types   generic

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!