none
拍謝..再問一個問題..關於IEnumerable泛型介面的Where泛型方法 RRS feed

  • 問題

  • IEnumerable<Sale_Tables.DataSets.CashierAchievementDataSet.spmRow> enumSpmRow= cashierAchievementDataSet.spm.Where(c => c.emp_name.Contains(comboBoxEmployees.SelectedValue.ToString()));

    IEnumerator<Sale_Tables.DataSets.CashierAchievementDataSet.spmRow> enumeratorSpmRow= spmRow.GetEnumerator();
    我用這樣去篩選..
    但是不知道要怎麼把結果返回目的物件=.=""..
    單純取得資料是有效果的,例如:
    while(enumeratorSpmRow.MoveNext()){
      //我將  enumeratorSpmRow.Current.某個資料欄位值  給某個屬性或物件
    }
    這樣做確實可以取得篩選的結果

    可是我實在不知道要用甚麼方式把全部結果一次返回給相關的目的物件以便更新呈現畫面..
    我用Microsoft ReportViewer物件來顯示報表畫面..
    有三個相關的物件
    DataSet物件、BindingSource物件、TableAdapter物件...

    希望知道的網友幫忙解決一下..
    請問各位要怎麼解決呢?..
    • 已編輯 directgxl 2009年6月25日 上午 07:14
    2009年6月25日 上午 07:12

解答

所有回覆

  • 用 ToList();會比較好做.

    • 已標示為解答 Lolota Lee 2009年6月26日 上午 06:44
    2009年6月25日 上午 07:51
  • 一整個暈到...
    不需要Where泛型方法..
    這樣自討苦吃..

                cashierAchievementDataSet.spm.DefaultView.RowFilter = "[emp_name] ='"+comboBoxEmployees.SelectedValue.ToString()+"'";
                spmBindingSource.DataSource = cashierAchievementDataSet.spm.DefaultView;
                reportViewer1.RefreshReport();
    像這樣就搞定了...

    • 已標示為解答 Lolota Lee 2009年6月26日 上午 06:43
    • 已取消標示為解答 Lolota Lee 2009年6月26日 上午 06:43
    2009年6月25日 上午 08:40
  • 我發現會因為DataSource改變而不會直接通知=.=""
    第一次是沒有任何效果的..

    我剛剛利用2樓網友的建議..
    改寫...
    IEnumerable<Sale_Tables.DataSets.CashierAchievementDataSet.spmRow> enumSpmRow;
                List<Sale_Tables.DataSets.CashierAchievementDataSet.spmRow> list;
               
                enumSpmRow= cashierAchievementDataSet.spm.Where(emp => emp.emp_name.Contains(comboBoxEmployees.SelectedValue.ToString()));
                list = enumSpmRow.ToList();
                spmBindingSource.DataSource = list;
               
                reportViewerSpm.RefreshReport();

    這樣做可行了...

    2009年6月26日 上午 06:26