2013-06-19 1 views
0

WebMatrix C#에서 사이트를 만들고 데이터베이스에서 채워야하는 입력 필드가 여러 개인 페이지가 있습니다. 데이터를 가져 오는 테이블에는 ID가 입력 필드 ID와 일치하는 조합 ID/값 열이 있습니다.열 값을 기반으로 쿼리에서 행을 선택하는 방법. Webmatrix C#

표는 같은 아래 보이는 곳 field_data = 데이터 FIELD_NAME = ID를 입력 필드에 일치 난 할 수

id  doc_id  field_data   field_name 
------ ------- -------------  ------------ 
45680 1549  Astoria Apartments q4_1Property 
45681 1549  1000     q11_7Arbor 
45682 1549  61 Street   q12_8Other[0][] 
45683 1549  Cleveland   q12_8Other[0][1] 
45684 1549  Ohio     q12_8Other[1][] 
45685 1549  43589    q12_8Other[1][1] 
45686 1549  USA     q12_8Other[2][] 
45687 1549  12     q12_8Other[2][1] 
45688 1549  d     q12_8Other[3][] 
45689 1549  13     q12_8Other[3][1] 

:

var queryinputvalue = "SELECT field_data FROM document_data WHERE field_name = @0 AND doc_id = @1"; 

<input type="text" class=" form-textbox" id="input_4" name="q4_1Property" size="20" value="@db.QueryValue(queryinputvalue, "q4_1Property", 1549)"/> 

그러나 이러한 형태의 일부가 100 개 이상의 입력 필드가 있으며 각 필드에 대해 별도의 데이터베이스 쿼리를 만드는 것이 과도한 것으로 보입니다.

모든 데이터에 대해 단일 쿼리를 만들고 필요한 데이터 만 쿼리에서 선택할 수있는 방법이 있습니까?

[]의 항목이 WebMatrix에 쿼리에서 반환 할 행을 지정해야하는 것과 같습니다.

var queryinputvalue = db.Query("SELECT * FROM document_data WHERE doc_id = @1", 1549); 

<input type="text" class=" form-textbox" id="input_4" name="q4_1Property" size="20" value="@queryinputvalue.[SELECT row where field_name = 'q4_1Property'].field_data"/> 

도움 주셔서 감사합니다.

답변

1

거의 다 왔어. 다음은 모든 관련 행을 가져옵니다.

var queryinputvalue = db.Query("SELECT * FROM document_data WHERE doc_id = @0", 1549); 

그런 다음 Linq 개체를 사용하여 결과 집합을 쿼리 할 수 ​​있습니다. FirstOrDefault는 다음을 위해 사용해야하는 확장 방법입니다.

var q4_1Property = queryinputvalue.FirstOrDefault(r => r.field_name.Equals("q4_1Property")).field_data; 
+0

정말 고마워요! 그것은 완벽하게 작동했고, 나는 그것을 영원히 이해하려고 노력해 왔습니다. –

관련 문제