2017-04-22 20 views
1

内部に保存された日付でobservablecollectionをフィルタリングしようとしています。ユーザーは、カレンダービューを使用して日付を選択します。タスク<ObservableCollection <AppointmentItem >>には定義されていません。

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クラスのコードを示します。

現在、私はこのエラーを取得しています:

Error CS1061 'Task>' does not contain a definition for 'Where' and no extension method 'Where' accepting a first argument of type 'Task>' could be found (are you missing a using directive or an assembly reference?

答えて

1

を私は

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

var items = manager.GetAppointmentItemsAsync(); 

を変更しようと、あなたは

using System.Linq; 
を追加しようとすることができますコードの
+1

私もあなたも愛しています:D –

+0

@glenncooperくそー!私はとても多くの質問に答えています。誰も私を愛しているとは言いませんでした...嫉妬感を感じる – CodingYoshi

2

あなたの次の行は:

var items = manager.GetAppointmentItemsAsync(); 

は明らかにWhereが含まれていませんTask返し、エラーを取得している理由です。

に次の行を変更してください:

var items = await manager.GetAppointmentItemsAsync(); 

、その後、あなたはWhereメンバーを持たなければならないタイプObservableCollection<AppointmentItem>のコレクションを取り戻すだろう。

+0

私はあなたをとても愛しています。 –

+1

'' :) #WishStackOverflowAllowedSmallerComments。ところで、@ Alessandro Caliaroにも愛を捧げる:D。彼は質問に答えるには1番だった。 –

関連する問題