2012-10-28 2 views
1

내 C# ASP.Net 프로젝트에서 xsd 데이터 집합을 사용하여 데이터베이스에 연결합니다. 강력하게 형식화 된 데이터 테이블에서 하나의 행을 반환하는 함수를 만들고 싶지만 C#에서이 작업을 수행하는 데 약간의 어려움이 있습니다.강력하게 형식화 된 데이터 집합에서 단일 행 반환

Public Function dr() As DataSet1.UsersRow 
    Dim ta As New DataSet1TableAdapters.UsersTableAdapter 
    Dim dt As DataSet1.UsersDataTable = ta.GetData 
    Return dt.Rows(0) 
End Function 

코드의 내 C# 버전은 다음과 같습니다 : 나는 이전에 성공적으로 코드를 사용하여 VB.Net에서 이런 짓을했는지 내가 암시 '형식을 변환 할 수 없습니다 오류를 얻을

public DataSet1.UsersRow dr() 
{ 
    DataSet1TableAdapters.UsersTableAdapter ta = new DataSet1TableAdapters.UsersTableAdapter(); 
    DataSet1.UsersDataTable dt = ta.GetData; 
    return dt.Rows(0); 
} 

을 System.Data.DataRow '을'MyProject.DataSet1.UsersRow '로 변경하십시오. 명시 적 변환이 존재한다 (당신은 캐스트를 누락?)

나는 C#에서 내 강력한 형식의 행을 반환 할 수있는 방법

답변

4

당신은 강하게에 쿼리를 추가하는 것입니다

dt[0];

+0

예 @ 당신의 오른쪽 @PHeiberg. 'dt.Users [0];'dt [0];' – SausageFingers

+0

예, 내 마음이 미끄러 져야합니다. 나는 어떻게 든 dt가 DataSet이라는 인상을 받았음에 틀림 없다. 지금 대답을 수정했습니다. – PHeiberg

1

나는 그것을 반환이 솔루션은 명시 적으로 행 항목을 변환 할 수 있었다 :

public DataSet1.UsersRow dr() 
{ 
    DataSet1TableAdapters.UsersTableAdapter ta = new DataSet1TableAdapters.UsersTableAdapter(); 
    DataSet1.UsersDataTable dt = ta.GetData(); 
    return (DataSet1.UsersRow)dt.Rows(0); 
} 
0

보다 효율적인 솔루션을 사용하여 입력 얻을 수 있어야합니다 SELECT TOP 1 ...의 선을 따라 tableadapter. FROM users (또는 더 일반적으로 WHERE 절을 추가하여 필요한 행을 반환합니다.) 그런 식으로 전체 표를 끌어 와서 한 행만 가져 오지는 않습니다.

관련 문제