2010-12-13 1 views
19

이 LINQ에 대해 머리를 쓰면 첫 번째 장애물에 머물러있는 것처럼 보입니다.LINQ가있는 데이터 세트에서 단일 열을 선택하십시오

나는 같은 데이터 테이블이 있습니다

OrderNo  LetterGroup Filepath 
----------- ----------- -------------------------------------------------- 
0   0   Letters/SampleImage.jpg 
0   0   Letters/UKPC7_0.jpg 
0   0   Letters/UKPC8_0.jpg 

는 내가 필요로하는 것은 문자열 배열로 파일 경로 열에서 filepaths을 모두 얻을 수 있습니다. 나는 LINQ가 이것이 완벽 할 것이라고 생각했지만 올바른 쿼리를 생성 할 수는 없다.

누구나 올바른 방향으로 나를 가리킬 수있는 몇 가지 코드 샘플을 제공 할 수 있습니까? 나는 주위를 수색했으나 아무데도 가지 않는 것 같습니다.

답변

30

데이터로 작업 할 수 있도록 확장 방법은 훨씬 쉽게이 설정은 다음과 같습니다

var filePaths = dataTable 
    .AsEnumerable() 
    .Select(row => row.Field<string>("Filepath")) 
    .ToArray(); 
11
string[] filePaths = (from DataRow row in yourDataTable.Rows 
        select row["Filepath"].ToString()).ToArray(); 
+0

이것은 LINQ를 전혀 사용하지 않습니다. – poindexter12

+2

@ poindexter12 - 뭐라고 요? LINQ는 나에게 보인다. – jfar

+0

@jfar : 이것은 기술적으로 LINQ 구문이므로 아래쪽 투표를 제거했습니다. 그러나 정신의 질문에, 나는 설명 할 수있는 조금 더 있다고 생각합니다. – poindexter12

2

당신 경우 :

using System.Data.Linq; 

var filePaths = 
    from row in dataTable.AsEnumerable() 
    select row.Field<string>("Filepath"); 

var filePathsArray = filePaths.ToArray(); 

또한 하나 개의 문장에 넣어하는 방법 구문을 사용할 수 있습니다 모든 방법으로 LINQ를 사용하고 데이터베이스를 설정하고 컨텍스트 개체를 만들고 싶습니다. 그럼 당신은 같은 것을 할 수 있어야한다 : 행이 나는 순서의 첫 번째 열 이름으로 추측 주문, 이름에 대한이 테이블을 가정 한 것입니다

var filepaths = from order in _context.Orders 
       select order.Filepath; 

.

var results = from order in _context.Orders 
       select new 
       { 
        order.OrderNo, 
        order.Filepath 
       } 

이 당신에게 두 사람이 포함 된 새 익명 형식을 줄 것이다 : 당신은 파일 경로가 당신과 같이 뭔가를 할 수 어디에서 왔는지 알고 나중에 사용하기 위해뿐만 아니라 주문 번호의 집합을 반환하고 싶었다면 값을 속성으로 사용합니다.