2014-05-11 4 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

Что вы пытаетесь вернуть? Список module_details с только 2 полями, а остальные недопустимыми, или новый класс, состоящий только из двух полей? –

+0

Я хочу вернуть запрос только с помощью столбцов module_id и модулей. –

ответ

1

Ваш module переменной является список анонимного типа, который имеет два свойства id и marks. Это то, что вы заявляете с 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

thanx. Он отлично работает –

+0

Уважаемый Joachim, я добавляю следующий код для отображения деталей запроса. Но это не работает. dataGridView1.DataSource = (logic.GetModuleDetails (int.Parse (textBox1.Text))); –

+0

@LakshihaGihan Что именно не работает? Неверный результат? Ошибка? ...? –

Смежные вопросы