2011-05-18 23 views
4

行,所以我有組合框衛生組織的數據源所遇到的問題IM LINQ查詢C#:如何從LINQ查詢設置組合框valuemember

//load QA names 
      var qaNames = 
       from a in db.LUT_Employees 
       where a.position == "Supervisor" && a.department == "Quality Assurance" 
       select new { a, Names = a.lastName + ", " + a.firstName }; 

      cboQASupervisor.DataSource = qaNames; 
      cboQASupervisor.DisplayMember = "Names"; 

的結果是,當我嘗試添加的代碼

下一行
cboQASupervisor.ValueMember = "ID"; 

我得到運行時它不能投的匿名類型的錯誤。我該如何解決這個問題?

校正: 錯誤是:

無法綁定到新值構件。 參數名:價值

回答

11

您指定ID作爲值字段,但你沒有ID屬性在你的匿名類型。
假設你在LUT_Employees有ID對象:

var qaNames = (
    from a in db.LUT_Employees 
    where a.position == "Supervisor" && a.department == "Quality Assurance" 
    select new { a.ID, Names = a.lastName + ", " + a.firstName }) 
    .ToList(); 

cboQASupervisor.DataSource = qaNames; 
cboQASupervisor.DisplayMember = "Names"; 
cboQASupervisor.ValueMember = "ID"; 
+0

ID在LUT_Employees對象中,但即時通訊仍然收到錯誤。實際上,您的解決方案是我嘗試的第一件事。 – Sinaesthetic 2011-05-18 03:24:47

+1

您需要指定匿名類型的屬性名稱。 - >「new {ID = a.ID,」 – Michael 2011-05-18 03:28:13

+0

@Sinaesthetic - 選中 - 添加ToList() – 2011-05-18 03:33:35

2

你可以試試這個:

 var qaNames = 
     from a in db.LUT_Employees 
     where a.position == "Supervisor" && a.department == "Quality Assurance" 
     select new { Id = a.ID, Names = a.lastName + ", " + a.firstName }; 

     cboQASupervisor.DataSource = qaNames.ToList(); 
     cboQASupervisor.DisplayMember = "Names"; 
     cboQASupervisor.ValueMember = "Id"; 

添加.ToList()到你的代碼中的數據源行。

+1

沒有改變任何東西 – Sinaesthetic 2011-05-18 03:33:17

+0

你確定嗎?你的例外是什麼?你有沒有添加'.ToList()'? – 2011-05-18 03:34:51

+0

異常是完全一樣的 – Sinaesthetic 2011-05-18 03:43:41