不能将字符串转换为bool
本文关键字:bool 转换 字符串 不能 | 更新日期: 2023-09-27 17:50:21
我得到一个错误:不能隐式地从'字符串'转换为'bool'sl.CustomerRefNbr是一个字符串从我的表设计
using (AH_ODS_DBEntities db = new AH_ODS_DBEntities())
{
string rs = db.Sales.Where(sl => sl.CustomerRefNbr);
I have try:
bool rs = db.Sales.Where(sl => sl.CustomerRefNbr).ToString();
string rs = db.Sales.Where(sl => sl.CustomerRefNbr);
Convert.ToBoolean(rs);
我又瞎了。我要做的就是从CustomerRefNbr列中获取数据并将其放在列表中
where子句需要一个布尔子句,并且您通过CustomerRefNbr给它可能是字符串或数值。如果你想选择所有这些值到一个列表中,使用select Linq方法:vars = db.Sales.Select(sl => sl.CustomerRefNbr).ToList();
最好将'Sale'保存为bool属性,或者至少保存为int。但无论如何,对于您的任务,下一个解决方案有助于避免解析错误。
var res = db.Sales.Where(x =>x.CustomerRefNbr!= null && x.CustomerRefNbr.ToUpper()=="TRUE");
string rs = db.Sales.Where(sl => sl.CustomerRefNbr);
实际上没有意义。您正在选择Sales,其中客户参考编号是..怎么啦?然后把销售列表赋值给一个字符串?
它看起来有点像你想说你想要输出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();
db.Sales.Where(sl => sl.CustomerRefNbr)
导致编译时错误,因为where
期望predicate
(返回true或false的东西)而您没有提供一个。
你可能想要的是Select
而不是Where
。db.Sales.Select(sl => sl.CustomerRefNbr);
再次返回CustomerRefNbr (IEnumerable<string>
)的集合,而不是单个值(string
)
将"collection"赋值给string
("single")类型的变量没有意义,并且再次导致compile
错误。
如果你想从IEnumerable
集合中获得一个值,你可以使用db.Sales.Select(sl => sl.CustomerRefNbr).First()
。这将在所有"Sales"中为您提供First
"Sale"的"CustomerRefNbr"。
现在,如果你想用CustomerRefNbr过滤"Sales",你可以先用where
子句和select
CustomerRefNbr来过滤。
db.Sales.Where(s1=>s1.CustomerRefNbr=="123").Select(s2 => s2.CustomerRefNbr).First();
现在这给你一个First
"CustomerRefNbr"在所有的销售CustomerRefNbr为"123"
我仍然不明白为什么你想要convert
"CustomerRefNbr"到boolean
?