无法将字符串转换为bool

时间:2015-05-21 03:56:56

标签: c#

我收到错误:无法隐式转换为'string'到'bool' sl.CustomerRefNbr是我的表格设计中的字符串

t

我试过了:

    using (AH_ODS_DBEntities db = new AH_ODS_DBEntities())
    {
        string rs = db.Sales.Where(sl => sl.CustomerRefNbr);

我再次失明了。 我要做的就是从CustomerRefNbr列中获取数据并将其放在列表中。

4 个答案:

答案 0 :(得分:2)

where子句需要一个boolean子句,并且你可以通过CustomerRefNbr给它一个字符串或数值。如果要像所说的那样选择所有这些值到列表,请使用select Linq方法: vars = db.Sales.Select(sl => sl.CustomerRefNbr).ToList();

答案 1 :(得分:0)

您的代码

string rs = db.Sales.Where(sl => sl.CustomerRefNbr);

实际上没有意义。您正在选择销售,其中客户参考编号是..什么?然后将销售清单分配给字符串?

看起来有点像你试图说你想要CustomerRefNbr作为输出,但是你没有说出你想要哪一行的价值。

您在尝试将字符串转换为bool时出错的原因是因为Where期望返回布尔值的表达式。布尔值为true的行将包含在结果中。它试图将sl.CustomerRefNbr解释为布尔值并失败。

即使它有效,结果也会是Sale个对象的集合,而不是字符串,所以你会得到另一个错误。

您需要使用Where指定所需的行以及Select所需的列。

例如:

 string rs = db.Sales.Where(sl => sl.Id == 123).Select(sl => sl.CustomerRefdNbr).First();

请注意,Where部分是一个返回布尔值的表达式。

因为结果仍然是一个集合(即使您知道只有一个结果),您必须致电First以将第一个结果合并为一个string

如果您想要所有 CustomerRefNbr值,那么您可以省略Where

List<string> refs = db.Sales.Select(sl => sl.CustomerRefNbr).ToList();

答案 2 :(得分:0)

最好用bool属性保存'Sale',或者至少保存为int。 但无论如何,对于您的任务,下一个解决方案有助于避免解析错误。

var res = db.Sales.Where(x =>x.CustomerRefNbr!= null && x.CustomerRefNbr.ToUpper()=="TRUE");

答案 3 :(得分:0)

db.Sales.Where(sl => sl.CustomerRefNbr)导致编译时错误,因为where期望predicate(返回true或false的内容)并且您没有提供。

您可能想要的是Select而不是Wheredb.Sales.Select(sl => sl.CustomerRefNbr);再次返回CustomerRefNbr(IEnumerable<string>)的集合,而不是单个值(string

分配&#34;集合&#34;对于string类型的变量(&#34;单个&#34;)值没有意义,并在compile错误中再次产生结果。

如果您想要IEnumerable集合中的单个值,则可以使用db.Sales.Select(sl => sl.CustomerRefNbr).First()。这给了你&#34; CustomerRefNbr&#34; First&#34; Sale&#34;在所有&#34;销售&#34; 。

现在,如果你想过滤&#34;销售&#34;使用CustomerRefNbr,您可以先使用where子句过滤并使用select CustomerRefNbr。

db.Sales.Where(s1=>s1.CustomerRefNbr=="123").Select(s2 => s2.CustomerRefNbr).First();

现在,这会为您提供First&#34; CustomerRefNbr&#34;在CustomerRefNbr为&#34; 123&#34;

的所有销售中

我仍然不明白你为什么要convert&#34; CustomerRefNbr&#34;到boolean