2011-03-11 6 views
0

나는 table.From 그 테이블 내가 키를 기반으로 테이블을 선택합니다. 이번에는 데이터베이스에서 행을 선택하는 열쇠 '검색'을 기반으로 행합니다. 그래서 내가있어 내 데이터 테이블의 행을 따르십시오.datatable - C에서 특정 값을 선택하십시오 #

Id | 열쇠 | 가치 |

1 assignedvalue 검색 난에 대응하는 값 지정할 10 개

4 검색 이름 존

6 탐색 채널 (20) I 3 개 변수

 int count,channels; 
     string name; 

를 선언

카운트 그 테이블에서 위의 변수. 나는이 작업을 수행 할 수있는 방법

count=10, 

channels= 20 

name=John 

아래 그림처럼

즉, 나는 데이터 테이블에서 값을 가져해야합니까?

답변

1

원하는 작업을 수행하는 한 가지 방법은 DataTable.Select 방법을 사용하는 것입니다.

이 방법을 사용하면 선택형 쿼리를 정의하고이를 DataTable에 적용 할 수 있습니다. 당신은 당신의 질의와 일치하는 DataRow 객체들의 배열을 되 찾을 것입니다. 다음은 링크 된 MSDN 기사의 예제에서 변형 된 예제입니다.

참고 : NameColumn이라는 이름의 DataColumn이 있다고 가정하고 검색 할 값이있는 열의 값을 ValueColumn이라고 가정합니다.

string expression; 
    expression = "NameColumn = 'John'"; 
    DataRow[] foundRows; 

    // Use the Select method to find all rows matching the filter. 
    foundRows = table.Select(expression); 

    // Print column 0 of each returned row. 
    for(int i = 0; i < foundRows.Length; i ++) { 
     // List out the retreived values. 
     Console.WriteLine(foundRows[i]["ValueColumn"]); 
    } 

그러나 LINQ를 사용하려는 경우 할 수 있습니다. LINQ query on a DataTable을 참조하십시오.

1

"검색 횟수 10"은 무엇을 의미합니까? dt.Rows.Count이 얼마나 많은 행을 가지고 있는지 알고 싶다면 작업을 수행하십시오.

열 이름이 FirstName 인 경우 dr["FirstName"]을 사용하여 값을 가져올 수 있습니다. 루프를 통해 값을 확인할 수 있습니다.

"모두 선택 검색"이란 무엇을 의미합니까? "선택한"열의 값이있는 행을 true으로 찾으려면 if ((dr["selected"] as bool? ?? false) == true)

질문을 개선하십시오. 당신이 달성하기를 원하는 것을 설명하십시오. 테이블의 스키마를 제공 할 수 있다면 좋을 것입니다. 그렇지 않으면 "모두 선택 검색"과 같은 것은 의미가 없습니다.

1

LINQ to DataSet을 사용하면 더 나은 형식 안전성, 더 나은 컴파일 시간 검사를 제공하고 필터 식을 구문 분석하는 오버 헤드를 피할 수 있습니다. 또한 각 할당에 대한 쿼리를 다시 작성하지 않으려면 LINQ의 지연된 실행을 활용할 수 있습니다. 당신은 같은 것을 고려할 수있다 : 우리는 우리가 DataTable에 다음에 쿼리를 강제로 찾고있는 값의 이름에 값 이름 변수의 값을 변경 위의 샘플에서

var valueName = String.Empty; 
var query = 
    from r in dt.AsEnumerable() 
    where r.Field<string>("Value").Equals(valueName) 
    select r.Field<string>("AssignedValue"); 

valueName = "count"; 
var count = 0; 
int.TryParse(query.FirstOrDefault(), out count); 

valueName = "channels"; 
var channels = 0; 
int.TryParse(query.FirstOrDefault(), out channels); 

valueName = "name"; 
var name = query.FirstOrDefault(); 

을 재 열거 FirstOrDefault를 호출하십시오.

관련 문제