2011-09-22 7 views
0

안녕 모두 내 문자 O 데이터베이스에서 일치하는 문자열 형식 오류를 얻으려고 할 때. 지금은 몇 가지를 시도하고 구글의 alot을하지만 여전히 캔트이 오류 내 경우 MSSQL 데이터베이스foreach linq2sql 문자열 문제

감사 위의 코드에서 문자 O가 포함되어 있는지 확인하는 올바른 방법을 무엇

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); 
} 

를 해결

+1

'Status'는 (는) 문자열 열입니까? – Clive

+0

아니요 전혀 q.docketNum == txtDisplay.Text && q.Status.Equals ("O") – Jay

+0

따옴표없이 0으로 바꾸어보세요 :'q.Status.Equals (0)' – Clive

답변

0

q.Status가. 자열 유형 C 럼 인 경우, g 용자가하는 f}은 정상입니다. 관심이 있으시면 람다 방법을 사용하십시오.

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); 
} 

도움이 되었기를 바랍니다.