我有一个LINQ查询来从我的数据库中获取数据:
query.Select(b => b.BooleanValue.Value).Distinct().ToArray();
此查询给出了错误
Linq无法将类型'bool []'隐式转换为'object []'。
我得到了一个十进制值相同的错误但是文本值一切正常。我在互联网上搜索过,但我发现只有object
到bool
的人才会遇到问题。
您知道如何转换(在LINQ select
)decimal
内转换为object
吗?
答案 0 :(得分:9)
您有一个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
完成。
答案 1 :(得分:5)
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();
仅arrays of reference types are co-variant。这是controversial功能。
答案 2 :(得分:0)
query.Select(b => (object)b.BooleanValue.Value).Distinct().ToArray();
或
query.Select(b => b.BooleanValue.Value).Distinct().Cast<object>().ToArray();