2016-05-17 42 views
0

有2個列表框:患者和會話。 需要根據第一個選擇中的多項選擇來顯示第二個過濾的信息(包含linq查詢)。LINQ和多選的列表框

評論字符串的作品,但只允許在第一個列表框中選擇一個項目。

我當然知道它成功收集患者到List變量,但是當我使用Contains時,第二個列表框是空的。

private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    DataClasses1DataContext dbContext = new DataClasses1DataContext(); 
    List<string> selectedItems = (from object o in listBox1.SelectedItems select listBox1.GetItemText(o)).ToList(); 
    listBox2.DataSource = dbContext.Sessions 
    //.Where(pID => pID.PatientID == listBox1.GetItemText(listBox1.SelectedValue)) 
     .Where(pID => selectedItems.Contains(pID.PatientID)); 
    listBox2.DisplayMember = "Start"; 
    listBox2.ValueMember = "SessionID"; 
} 

會話和的DbContext類定義:

public partial class Session : INotifyPropertyChanging, INotifyPropertyChanged 
    { 
    ... 
    public int SessionID 
     { 
     ... 
     } 
    public string PatientID 
     { 
     ... 
     } 
    } 

public partial class DataClasses1DataContext : System.Data.Linq.DataContext 
    { 
    ... 
    public System.Data.Linq.Table<Session> Sessions 
     { 
     ... 
     } 
    } 
+0

你的例外是什麼? –

+0

沒有例外,它只是加載emply listBox2。 – Artem

回答

0

我不知道你在ListBox1的是有什麼類型的元素。我認爲這種類型被命名爲Session

private void listBox1_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     DataClasses1DataContext dbContext = new DataClasses1DataContext(); 
     List<string> selectedItems = (from object o in listBox1.SelectedItems select listBox1.GetItemText(o)).ToList(); 
     listBox2.DataSource = dbContext.Sessions 
      .Where(pID => listBox1.SelectedItems.OfType<Session>().Select(x => x.PatientID).Contains(pID.PatientID)); 
     listBox2.DisplayMember = "Start"; 
     listBox2.ValueMember = "SessionID"; 
    } 
+0

listBox2中仍然沒有顯示任何內容:( – Artem

+0

dbContext.Sessions和PatientID是什麼類型?你可以在你的問題中發表更多代碼嗎? –

+0

完成了嗎?我是新手,對不起。 – Artem