2014-05-11 2 views
0

테이블의 두 열을 선택하여 다음 코드를 추가합니다. 그러나 반환 모듈은 밑줄이 있습니다. 도와주세요.두 개의 정수 열 선택을위한 linq 쿼리

public List<module_details> GetModuleDetails(int modId) 
{ 
      var module = (from a in connection.module_details 
         where a.module_id == modId 
         select new 
      { 
       id = a.module_id, 
       marks = a.module_marks 
      } 
      ).ToList(); 

      return module; 
} 
+0

무엇을 반환하려고합니까? 2 개의 필드 만 유효하고 나머지는 무효 인 module_details 목록 또는 두 개의 필드만으로 구성된 새로운 클래스? –

+0

module_id 및 module marks 열만 선택하여 쿼리를 반환하고 싶습니다. –

답변

1

귀하의 module 변수는 두 가지 속성 idmarks이있는 익명 형식의 목록입니다. 그것이 new { .. }으로 선언 한 것입니다.

컴파일러에 관한 한 완전히 다른 유형이기 때문에 module_details의 목록으로 반환 할 수 없습니다. 당신은 module_details의 새 인스턴스를 선택해야합니다

 var module = (from a in connection.module_details 
        where a.module_id == modId 
        select new module_details 
     { 
      id = a.module_id, 
      marks = a.module_marks 
     } 
     ).ToList(); 

이 코드 예제는 module_details 클래스는 이러한 속성을 가지고 있다고 가정하고 공공 설정할 수 있습니다. 이름 짓기가 잘못되었거나 module_details의 정의에 따라 module_details에 (기본값이 아닌) 생성자를 호출해야 할 수 있습니다.

module_details을 반환하지 않으려면 그에 따라 메서드 서명을 변경해야합니다.

+0

고맙습니다 매우 –

1

두 열만 반환하는 가장 간단한 방법은 아마도 데이터를 보유 할 클래스를 만들고 데이터를 해당 클래스의 컬렉션처럼 반환하는 것입니다.

// Types may be incorrect, not sure what the original types are 
public class module_subset { public int id; public int marks; } 

// Select the two columns a list of module_subsets 
public IList<module_subset> GetModuleDetails(int modId) 
{ 
    var module = (from a in connection.module_details 
        where a.module_id == modId 
        select new module_subset 
        { 
         id = a.module_id, 
         marks = a.module_marks 
        }).ToList(); 

    return module; 
} 
+1

고맙습니다. 괜찮습니다. –

+0

요아킴님께, 다음과 같이 쿼리 세부 정보를 표시하는 코드를 추가합니다. 하지만 작동하지 않습니다. dataGridView1.DataSource = (logic.GetModuleDetails (int.Parse (textBox1.Text))); –

+0

@ LakshihaGihan 정확히 작동하지 않는 것은 무엇입니까? 잘못된 결과? 오류? ...? –