[英]Cannot convert string to bool
我收到錯誤消息:無法從'string'隱式轉換為'bool'sl.CustomerRefNbr是我的表格設計中的字符串
using (AH_ODS_DBEntities db = new AH_ODS_DBEntities())
{
string rs = db.Sales.Where(sl => sl.CustomerRefNbr);
我努力了:
bool rs = db.Sales.Where(sl => sl.CustomerRefNbr).ToString();
string rs = db.Sales.Where(sl => sl.CustomerRefNbr);
Convert.ToBoolean(rs);
我又瞎了。 我想做的就是從CustomerRefNbr列中獲取數據並將其放在列表中。
where子句需要一個布爾子句,您可以通過CustomerRefNbr給它提供字符串或數字值。 如果vars = db.Sales.Select(sl => sl.CustomerRefNbr).ToList();
您的說明將所有這些值選擇到列表中,請使用select Linq方法: vars = db.Sales.Select(sl => sl.CustomerRefNbr).ToList();
您的密碼
string rs = db.Sales.Where(sl => sl.CustomerRefNbr);
實際上沒有任何意義。 您選擇客戶參考號在哪里的“銷售”。什么? 然后將銷售清單分配給字符串?
看起來有點像您要說要把CustomerRefNbr
作為輸出,但是卻沒有說您要哪一行的值。
您收到有關嘗試將字符串轉換為bool的錯誤的原因是因為Where
在期待返回布爾值的表達式。 布爾值為true的行將包含在結果中。 它試圖將sl.CustomerRefNbr
解釋為布爾值並且失敗。
即使可行,結果仍是Sale
對象的集合,而不是字符串,因此您會遇到另一個錯誤。
你需要指定要與行(S) Where
你想與和列(S) 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();
最好用bool屬性或至少將int屬性保存為“ Sale”。 但是無論如何,對於您的任務,下一個解決方案有助於避免解析錯誤。
var res = db.Sales.Where(x =>x.CustomerRefNbr!= null && x.CustomerRefNbr.ToUpper()=="TRUE");
db.Sales.Where(sl => sl.CustomerRefNbr)
導致編譯時錯誤,因為where
期望predicate
(返回true或false的predicate
),並且您不提供predicate
。
您可能想要的是Select
而不是Where
。 db.Sales.Select(sl => sl.CustomerRefNbr);
它再次返回CustomerRefNbr( IEnumerable<string>
)的集合,而不是單個值( string
)
將“集合”分配給string
類型(“單”)值的變量沒有任何意義,並且再次導致compile
錯誤。
如果要從IEnumerable
集合中獲取單個值,則可以使用db.Sales.Select(sl => sl.CustomerRefNbr).First()
。 這為您提供了所有“銷售”中First
“銷售”的“ CustomerRefNbr”。
現在,如果要使用CustomerRefNbr過濾“銷售”,則可以先使用where
子句過濾 ,然后select
CustomerRefNbr。
db.Sales.Where(s1=>s1.CustomerRefNbr=="123").Select(s2 => s2.CustomerRefNbr).First();
現在,這為您提供所有CustomerRefNbr為“ 123”的銷售中的First
“ CustomerRefNbr”
我仍然不明白您為什么convert
“ CustomerRefNbr” convert
為boolean
?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.