任务<的ObservableCollection <appointmentitem>&GT;不包含where的定义

时间:2017-04-22 12:36:50

标签: c# azure xamarin task observablecollection

我试图通过保存在里面的日期来过滤observablecollection。用户将使用日历视图选择日期。

public async Task RefreshItems(bool showActivityIndicator, bool syncItems)
        {
            using (var scope = new ActivityIndicatorScope(syncIndicator, showActivityIndicator))
            {

                var items = manager.GetAppointmentItemsAsync();


                CalendarVM vm = new CalendarVM();
                calendar.SetBinding(Calendar.DateCommandProperty, nameof(vm.DateChosen));
                calendar.SetBinding(Calendar.SelectedDateProperty, nameof(vm.DateSelected));
                calendar.BindingContext = vm;

                var filtered = items.Where(appointmentItem => appointmentItem.Date == SelectedDate);
            }
        }

以下是AppointmentPage类中的代码,其中包含用户选择的日期和数据。

  public async Task<ObservableCollection<AppointmentItem>> GetAppointmentItemsAsync(bool syncItems = false)
        {


            try
            {

                IEnumerable<AppointmentItem> items = await appointmentTable
                                        .ToEnumerableAsync();

                return new ObservableCollection<AppointmentItem>(items);

            }
            catch (MobileServiceInvalidOperationException msioe)
            {
                Debug.WriteLine(@"Invalid sync operation: {0}", msioe.Message);
            }
            catch (Exception e)
            {
                Debug.WriteLine(@"Sync error: {0}", e.Message);
            }
            return null;

        }

以下是dataManger类中用于从数据库中检索数据的代码。

目前我收到此错误:

  

错误CS1061&#39;任务&gt;&#39;才不是   包含&#39; Where&#39;的定义并没有延伸方法&#39;其中&#39;   接受第一个类型的参数   &#39;任务&GT;&#39;可以找到(是你   缺少using指令或程序集引用?

2 个答案:

答案 0 :(得分:2)

您的以下代码行:

    #include <stdio.h>

     int main () 
       {
    int c=0,nother=0,new=0,ndigits[10],white=0,tabs=0,i=0 ; 
    for ( i = 0 ; i< 10 ; i++)
        ndigits[i] = 0 ;
    while ( (c = getchar() )!= EOF ) 
    {
        switch (c)
        {
            case '0' :
            case '1' :
            case '2' : 
            case '3' :
            case '4' :
            case '5' : 
            case '6' :
            case '7' :
            case '8' : 
            case '9' : 
                      ndigits[c- '0' ]++ ; 
                      break ; 
            case ' '  : 
                       printf("w");  /*to see how many spaces */
                       white++ ; 
            case '\t' :
                       printf("t");
                       tabs++;
                       break;
            case '\n' : 
                           {
                        printf("n");
                        new++ ; 
                        break ; 
                             }
            default : 
                      nother++ ; 
                      break ;     
        }
    }
    printf ("digits = " ) ; 
    for (i = 0 ; i < 10 ; i++ ) 
        printf ("%d" , ndigits[i]) ;
    printf (",tabs = %d , new line = %d,  spaces = %d , other = %d " ,tabs , new,white , nother) ; 
    return 0 ;
      } 

返回var items = manager.GetAppointmentItemsAsync(); ,显然不包含Task,这就是您收到错误的原因。

请将此行更改为:

Where

然后你会得到一个var items = await manager.GetAppointmentItemsAsync(); 类型的集合,该集合应该有ObservableCollection<AppointmentItem>成员。

答案 1 :(得分:1)

我尝试改变

var items = manager.GetAppointmentItemsAsync();

ObservableCollection<AppointmentItem> items = await manager.GetAppointmentItemsAsync();

然后你可以尝试添加

using System.Linq;