2013-04-17 7 views
0

내가 그것을 누르면 텍스트 상자에있는 문자열을 가져 와서 모든 레코드를 찾을 특정 문자열이 문자열이나 char로 시작하는 버튼을 설정하려고합니다. . 그리고 여기 람다에서 문자 시작하여 검색

코드의 약간 내가 달성 한되는

목록 상자 또는 DataGridViewer에 결과를 보여,하지만 난 그것을 사전에

private void button3_Click(object sender, EventArgs e) 
    { 
     MyLinqDataContext MyData = new MyLinqDataContext(); 
     MyList myLambda = MyData.MyLists.First(lambda => lambda.First_Name.StartsWith(TxtFirstName.Text)); 

    } 

감사합니다 :)

+0

그럼 어떻게 작동하지 않는 데이터 컨텍스트를 사용하고 계십니까? – Arran

답변

2

1) First (linq)은 단일 레코드를 반환합니다. 목록을 반환하려면 Where을 사용하는 것이 좋습니다.

2) Where (linq)은 IEnumerable<T> 유형의 컬렉션을 반환합니다. 나중에 .ToList()으로 전화하거나 var을 입력해야합니다.

3) 원래 테이블을 쿼리 할 수있는 형식으로 가지고있는 한이를 실행하기 위해 새 데이터 컨텍스트를 만들지 않아도됩니다.

private void button3_Click(object sender, EventArgs e) 
{ 
    var myLambda = MyDataTable.AsEnumerable().Where(lambda => lambda.Field<string>("First_Name").StartsWith(TxtFirstName.Text)); 
    //var should be of the type IEnumerable<DataRow> 

    //from here, we can use this var as the DataSource for another display 
    resultsBox.DataSource = myLambda; 
    //assuming resultsBox can interpret a datarow correctly. 
    //You may need to select First_Name only, or some other data, out of the returned values. 
} 

또는 예에 의한

최종 코드,

private void button3_Click(object sender, EventArgs e) 
{ 
    MyLinqDataContext MyData = new MyLinqDataContext(); 
    var myLambda = MyData.MyLists.Where(lambda => lambda.First_Name.StartsWith(TxtFirstName.Text)); 

    resultsBox.DataSource = myLambda; 
} 
+0

나에게 가장 좋은 설명, Thanks alot :) –

1

만약을 계속할 수 없습니다 그래서

private void button3_Click(object sender, EventArgs e) 
{ 
    MyLinqDataContext MyData = new MyLinqDataContext(); 
    MyList myLambda = MyData.MyLists.Where(lambda => lambda.First_Name.StartsWith(TxtFirstName.Text[0].ToString())); 
} 

가 위의 사용 당신은 당신이 .Where()를 사용하려면 .First() 사용하여 원하지 않는 모든 레코드를 찾으려면 첫 번째 문자를 검색 할 문자열 [0]의 첫 번째 인덱스.