簡體   English   中英

無法將字符串轉換為布爾

[英]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” convertboolean

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM