";无法隐式转换类型';bool[]';到';object[]'&”;
本文关键字:bool object 转换 quot 类型 | 更新日期: 2023-09-27 18:00:20
我有一个LINQ查询来从我的数据库中获取数据:
query.Select(b => b.BooleanValue.Value).Distinct().ToArray();
这个查询给我错误
Linq无法将类型"bool[]"隐式转换为"object[]"。
我在使用十进制值时也遇到了同样的错误,但使用文本值时一切都很好。我搜索了整个互联网,只发现有人对object
到bool
有问题。
你知道如何(在LINQ select
中)将decimal
转换为object
吗?
您有一个LINQ to Entities查询,希望在服务器上执行该查询,并将结果作为对象数组返回。服务器上的查询提供了一系列值类型的不同值。
因此,我们要做的是在服务器上执行尽可能多的查询,然后在客户端上将结果转换为普通序列,然后在客户机上将值装箱。因此:
object[] results = query
.Select(b => b.BooleanValue.Value) // on the server
.Distinct() // on the server
.AsEnumerable() // now we're on the client
.Cast<object>() // box each value to object on the client
.ToArray(); // put the results into an array of objects on the client
完成。
query
.Select(b => b.BooleanValue.Value)
.Distinct()
.Cast<object>()
.ToArray();
你可能需要这样做:
query
.Select(b => b.BooleanValue.Value)
.Distinct()
// execute query
.AsEnumerable()
// cast in memory
.Cast<object>()
.ToArray();
只有引用类型的数组是协变的。这是一个有争议的特点。
query.Select(b => (object)b.BooleanValue.Value).Distinct().ToArray();
或
query.Select(b => b.BooleanValue.Value).Distinct().Cast<object>().ToArray();