2013-05-16 7 views
-3

그래서 나는 그것에있는 정보가있는 DataGrid가 있고 그것을 검색하고 싶습니다 그러나 검색 조건을 Year (int)과 해당 유형 (문자열).운영자 == 문자열 및 int 형식의 피연산자에 적용 할 수 없습니다

products[] a = new products[productscopy.Count]; 
int type = int.Parse(textBox2.Text); 
int year = int.Parse(textBox1.Text); 

int br = 0; 
foreach (products sl in productscopy) 
{ 
    if (sl.Year == year && sl.Type == type) //line that causes problem 
    { 
     a[br] = sl; br++; 
    } 
} 
if (br > 0) 
{ 
    products[] b = new products[br]; 
    for (int i = 0; i < br; i++) 
    { 
     b[i] = a[i]; 
    } 
    dataGridView1.DataSource = b; 
    dataGridView1[0, 0].Selected = false; 
} 
else { dataGridView1.DataSource = null; } 
+1

'sl.Year' 및'sl.Type' 유형은 무엇입니까? BTW - 오타가 있습니다. 'sl.Year == year', 두 개의'= '기호, 하나가 아닌 부호 여야합니다. – Oded

+0

sl.Year = 년? 당신이 원한다면 : sl.Year == year – Gisway

+0

'(sl.Year = year'는 거의 확실한 버그입니다.)'=='no' =''를 원할 것입니다. – Servy

답변

2

음 ... 오류가 문자열과 지능 사이의 진술, 연산자 == 같은 경우 .... 내가 그 sl.year 문자열 가정 및 연도 정수 내가 볼 수있는 것입니다. 둘 중 하나를 변환해야합니다. 문제는 sl.Type과 Type ... 사이에있을 수도 있습니다. 이후 productscopy 객체를 제공하지 않았으므로 확실하지 않습니다. 나는 두 가지 가능성을 볼

+0

그는' Type'은 문자열이었습니다. 그는 문자열을 사용해야하는 경우 입력란에 int.parse를 사용하고 있습니다. –

+0

왜 sl.Type이 아닌지 == textBox2.Text (int.Parse (textBox2.Text))? 작성자는 Type이 문자열이라는 것을 구체적으로 말합니다. –

+0

이는 오류가 sl.Type을 자신의 로컬 Type 변수와 비교한다는 것을 의미합니다.하나는 정수이고, 다른 하나는 문자열이며, 두 개는 결코 같지 않습니다 :-) – Nevyn

0

...

어느 sl.Year 유형 string의 또는 sl.Type이 두 경우 유형 string (또는 둘 다)

의, 당신은 비교 변수는 string 같은 선언해야합니다 그래서 :

string type = textBox2.Text; 

.Trim 필요할 수 있습니다.

기본 속성의 유형을 변경하거나 .ToString()을 추가하여 예상되는 동작을 얻는 지 확인할 수 있습니다.

또한 = 대신 ==을 사용하려면 위의 권장 사항을 따라야하지만 .NET은 그렇지 않으면 컴파일되지 않으므로이 문제는 오타가 아닙니다.

0

정확한 오류는 무엇입니까? stringint (또는 임의의 숫자 클래스) 사이의 "=="비교가 없습니다.

하나를 다른 유형으로 변환해야합니다. 일반적으로 더 엄격한 유형으로 변환하는 것이 더 좋지만 더 많은 오류 처리가 필요할 수 있습니다.

if (sl.Year == textBox1.Text && sl.Type == textBox2.Text) 

또는 sl.Year을 경우 예외를 처리해야합니다 (텍스트 값에 int.Parse를 사용 textBox1.Text (및 유형에 대한 가능성 동일)에서 비 구문 분석 해 귀하의 경우 간단한 사용법에

충분히 될 수있다

if (int.Parse(sl.Year) == year && int.Parse(sl.Type) == type) 

참고 : 숫자)가 아닌 샘플 아마 실수, 년에 비해 = 있습니다.

관련 문제