"无法隐式转换类型' bool []'对象[]'"

时间:2014-04-25 12:46:47

标签: c# linq

我有一个LINQ查询来从我的数据库中获取数据:

query.Select(b => b.BooleanValue.Value).Distinct().ToArray(); 

此查询给出了错误

  

Linq无法将类型'bool []'隐式转换为'object []'。

我得到了一个十进制值相同的错误但是文本值一切正常。我在互联网上搜索过,但我发现只有objectbool的人才会遇到问题。

您知道如何转换(在LINQ selectdecimal内转换为object吗?

3 个答案:

答案 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();