2009-08-20 6 views
2

다차원 문자열 배열 (다른 배열의 열 이름)으로 표시된 테이블을 가져 와서 SQL SELECT 문을 사용하여 행의 하위 집합을 가져 오려고합니다. 다차원 배열에서 SQL을 실행하는 가장 빠른 방법

캐치 :

:

  • 테이블이 입력은 사용자 (다른 테이블마다)
  • 는 SQL도

내가해야합니까 사용자가 입력하는 것입니다

  1. SQL에서 테이블 만들기
  2. SQ에서 테이블 채우기 L
  3. 쿼리 테이블

또는이 간단한 해결책인가? 예 : 다차원 배열을 DataTable로 변환 한 다음 해당 개체에서 SQL을 실행하고 있습니까?

+0

가장 간단한 방법은 LINQ를 사용하는 것입니다. – Chris

+0

LINQ를 사용자가 문자열로 입력 할 수 있습니까? – Chad

답변

3

나는 이것을 위해 DataTable을 사용할 수있을 것이라고 생각합니다. 일반적으로 데이터베이스에서 검색 한 데이터를 저장하는 데 사용되지만 수동으로 채울 수는 있습니다. 가장 중요한 부분은 DataTable.Select() 메서드입니다.이 메서드를 사용하면 쿼리의 WHERE 절만 쓸 수 있으며 일치하는 행을 반환합니다.

+0

그것은 내가 기울어 진 방향입니다 (Starsignleo의 의견과 함께). 나는 여러 구성 요소 (SELECT, WHERE, ORDER, GROUP)에 대한 쿼리 구문 분석을 생각하고있었습니다.
추가 조사시 : 동적 LINQ가 더 나은 가능성 일 수 있습니다. – Chad

1

사용자가 입력 한 쿼리를 나타내는 고유 한 표현 트리를 만들 수 있습니다. 이것이 Linq가 작동하는 방식입니다. 당신이 달성하고자하는 것이 무엇인지 예를들 수 있다면, 예를 들어 웹을 위해 C#에서 응용 프로그램을 작성하는 데 도움이 될 수도 있습니다.

예를 들어 사용자가 새로운 행을 입력하도록 한 경우 GUI의 일종 인 테이블에 대해 데이터 격자에서이를 수행하고 위에서 언급 한 결과를 얻기 위해 열 필터를 사용할 수 있습니까?

웹 응용 프로그램에서 각 열 위에 입력란이있을 수 있으므로 사용자가 해당 열을 필터링 할 데이터를 입력 할 수 있습니다.

+0

데이터는 다양한 형식 (예 : CSV, Tab/Return)으로 제공되지만 2D 배열로 변환됩니다. 필수 기능의 최소 집합은 SELECT, WHERE, ORDER 및 GROUP입니다. 그러나 모든 SQL 쿼리 (JOIN 포함)에 대한 완전한 지원을 선호합니다. 문제는 프로그래밍 방식으로 단일 쿼리를 수행 할 때마다 테이블을 추가하는 것이 비효율적이며 복잡하고 느린 것입니다. – Chad

+0

어쩌면 당신이하고 싶은 것은 조금 복잡 할 것입니다. 그룹화를 실제로해야합니까? Datagrid와 함께 제공되는 대부분의 기능과 여기에서 사용하는 Devexpress Grid는 그룹화를 지원합니다. – StarSignLeo

관련 문제