2011-09-22 89 views
0

大家好,當我想在我的數據庫中匹配一個字母O我得到字符串格式錯誤。現在我已經嘗試了一些東西,谷歌很多,但仍然無法糾正此錯誤foreach linq2sql字符串問題

const string st1 = ("O"); 
var docketcheck = from q in db.Dockets 
        where q.DocketNum == txtDisplay.Text && q.Status.Equals(st1) 
        select q; 

foreach (Docket d in docketcheck) 
{ 
    if (d.EngName.Equals("NULL")) 
    { 
    isEngNameNull = true; 
    break; 
    } 
} 

if (isEngNameNull) 
{ 
    txtDisplay.Clear(); 
    txtDisplay.ReadOnly = false; 
    var engs = new EngStart(); 
    engs.ShowDialog(this); 
} 
else 
{ 
    var sub = new machinesel(); 
    txtDisplay.Clear(); 
    sub.ShowDialog(this); 
} 

什麼是正確的方法來檢查,如果我的MSSQL數據庫包含在上面的代碼字母O

感謝

+1

你確定'Status'是一個字符串列嗎? – Clive

+0

不,根本沒有,我只是在哪裏q.DocketNum == txtDisplay.Text && q.Status.Equals(「O」) – Jay

+0

嘗試用0(零)替換它,不加引號:'q.Status.Equals 0)' – Clive

回答

0

只要q.Status是一個字符串類型的列,您正在做的方式就沒有問題。 這是lambda的方式來做到這一點,如果你有興趣。

db.Dockets.Where(q => q.DocketNum == txtDisplay && q.Status == "O") 
0

你的代碼看起來很好,當我在我的機器上測試了一個等價的查詢時,它沒有問題。

你可以整理你的代碼了一下,使其只拉回匹配的記錄是這樣的計數:

const string st1 = "O"; 

var docketcheck = 
    from q in db.Dockets 
    where q.DocketNum == txtDisplay.Text 
    where q.Status == st1 
    where d.EngName == "NULL" 
    select q; 

if (docketcheck.Any()) 
{ 
    txtDisplay.Clear(); 
    txtDisplay.ReadOnly = false; 
    var engs = new EngStart(); 
    engs.ShowDialog(this); 
} 
else 
{ 
    var sub = new machinesel(); 
    txtDisplay.Clear(); 
    sub.ShowDialog(this); 
} 

我希望這有助於。