";无法隐式转换类型';bool[]';到';object[]'&”;

本文关键字:bool object 转换 quot 类型 | 更新日期: 2023-09-27 18:00:20

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

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

这个查询给我错误

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

我在使用十进制值时也遇到了同样的错误,但使用文本值时一切都很好。我搜索了整个互联网,只发现有人对objectbool有问题。

你知道如何(在LINQ select中)将decimal转换为object吗?

";无法隐式转换类型';bool[]';到';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();