2014-05-11 151 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和模塊標記列來返回查詢。 –

回答

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

thanx。它工作正常 –

+0

親愛的Joachim,我添加以下代碼來顯示查詢詳細信息。但它不起作用。 dataGridView1.DataSource =(logic.GetModuleDetails(int.Parse(textBox1.Text))); –

+0

@LakshihaGihan到底什麼是不工作?錯誤的結果?錯誤? ...? –