2013-03-11 26 views
0

我使用这种方法来获取数据如何解决lambda表达式委托错误?

private void getNews(int cat_id, int page) 
    { 
     this.progress.Visibility = Visibility.Visible; 
     var m = new SharpGIS.GZipWebClient(); 
     Microsoft.Phone.Reactive.Observable.FromEvent<DownloadStringCompletedEventArgs>(m, "DownloadStringCompleted").Subscribe(l => 
     { 
      try 
      { 
       //List<NewsKeys> deserialized = JsonConvert.DeserializeObject<List<NewsKeys>>(r.EventArgs.Result); 
       ObservableCollection<NewsKeys> deserialized = JsonConvert.DeserializeObject<List<NewsKeys>>(l.EventArgs.Result); 

       foreach (NewsKeys item in deserialized) 
       { 
        items.Add(new NewsKeys { nId = item.nId, title = item.title, shortDesc = item.shortDesc, fullDesc = item.fullDesc, tags = item.tags, smallPic = item.smallPic, bigPic = item.bigPic, video = item.video, audio = item.audio, youtube = item.youtube, doc = item.doc, date_create = item.date_create, date_modify = item.date_modify, date_publish = item.date_publish, catId = item.catId, viewOrder = item.viewOrder, viewCount = item.viewCount, viewStatus = item.viewStatus, viewHome = item.viewHome, uId = item.uId, uFname = item.uFname }); 
       } 
      } 
      catch (Exception) 
      { 
       MessageBox.Show("Sorry, Some unexpected error."); 
      } 
     }); 
     m.DownloadStringAsync(new Uri(Resource.NEWS_API+cat_id+"&page="+page)); 
    } 

错误我得到的是

错误1无法转换lambda表达式为类型“System.IObserver>”,因为它不是委托C型:\ Users \ Adodis \ Documents \ Visual Studio 2010 \ Projects \ TV \ NewsListPage.xaml.cs 51 133

我试过所有的修复程序,但无法修复此问题。我在不同的类中使用不同方法的相同块,它工作正常,但是这个类中的这个方法杀死了我。请帮助我,如果你有这个想法。

在此先感谢。

回答

0

试试这个(我已经分开SelectSubscribe操作):

var m = new SharpGIS.GZipWebClient(); 

Observable.FromEvent<DownloadStringCompletedEventArgs>(m, "DownloadStringCompleted") 
      .Select(l => l.EventArgs.Result) 
      .Subscribe(res => 
       { 
        try 
        { 
         var deserialized = JsonConvert.DeserializeObject<List<NewsKeys>>(res); 

         foreach (NewsKeys item in deserialized) 
         { 
          items.Add(
           new NewsKeys 
            { 
             nId = item.nId, 
             title = item.title, 
             shortDesc = item.shortDesc, 
             fullDesc = item.fullDesc, 
             tags = item.tags, 
             smallPic = item.smallPic, 
             bigPic = item.bigPic, 
             video = item.video, 
             audio = item.audio, 
             youtube = item.youtube, 
             doc = item.doc, 
             date_create = item.date_create, 
             date_modify = item.date_modify, 
             date_publish = item.date_publish, 
             catId = item.catId, 
             viewOrder = item.viewOrder, 
             viewCount = item.viewCount, 
             viewStatus = item.viewStatus, 
             viewHome = item.viewHome, 
             uId = item.uId, 
             uFname = item.uFname 
            }); 
         } 
        } 
        catch (Exception) 
        { 
         MessageBox.Show("Sorry, Some unexpected error."); 
        } 
       }); 

m.DownloadStringAsync(new Uri("Resource.NEWS_API" + cat_id + "&page=" + page)); 
相关问题