需要一些帮助以适应旧的RX代码段 [英] need some help to adapt an old RX snippet
问题描述
我无法弄清楚如何根据互联网上的布莱恩·诺伊斯(Bryan noyes)来制作演示.
i cannot figure out how to adapt a demo from bryan noyes found on the internet .
这正是我想要得到的,但是它使用了旧版本的rx,并且某些部分已经过时了:
this is exactely what i want to get, but it use an old version of rx and some parts are obselete :
这是一个需要更新的代码段
this is a snippet that need some update
void FeedInput(TextBox textBox, ItemsControl list)
{
var inputObservable = from evt in Observable.FromEventPattern<TextChangedEventHandler, TextChangedEventArgs>
(h => textBox.TextChanged += h, h => textBox.TextChanged -= h)
select ((TextBox)evt.Sender).Text;
var throttledInput = inputObservable.Throttle(TimeSpan.FromSeconds(.2)).DistinctUntilChanged();
//var throttledInput = inputObservable;
var proxy = new CustomerLookupServiceClient();
var loopupCallObservable = Observable.FromAsyncPattern<string, List<CustomerInfo>>(
proxy.BeginGetCustomerInfo, proxy.EndGetCustomerInfo);
var matches = from input in throttledInput
from found in loopupCallObservable(input).TakeUntil(throttledInput)
select found;
matches.ObserveOnDispatcher().Subscribe(match =>
{
ShowHideMatchList(match, list);
});
}
我必须更改的2项主要内容:
2 main things i have to change:
-用实体框架查询替换WCF代理.
- replace the WCF proxy by an entity framework query .
-visual studio告诉我 FromAsyncPattern 已过时,我必须用任务替换它,但我不知道如何.
- visual studio tell me that FromAsyncPattern is obselete and i have to replace it with tasks but i don't know how .
感谢您的帮助
ps:我知道这与WPF不完全相关....但是:p
ps : i know it's not related exactly to WPF .... but :p
推荐答案
这是我的尝试
private async Task<List<AdherantListResult>> getAdherantsList(string filter)
{
using (var ctx = ContextFactory.ObtainContext())
{
var lst = from adh in ctx.ADHERANTS.Include("INSCRIPTIONS")
select new AdherantListResult()
{
Personne = new AdherantListRow()
{
ID_ADHERANT = adh.ID_ADHERANT,
ADH_NOM = adh.ADH_NOM,
ADH_PRENOM = adh.ADH_PRENOM,
ADH_SEXE = adh.ADH_SEXE,
ADH_PHOTO = adh.ADH_PHOTO
}
,
INSCRIPTIONS = adh.INSCRIPTIONS
};
if (filter != "")
lst = lst.Where(a => a.Personne.ADH_NOM.ToUpper().StartsWith(filter.ToUpper()));
return await lst.ToListAsync();
};
}
void SetuprxFilter(TextBox textBox, ItemsControl list)
{
var inputObservable = from evt in Observable.FromEventPattern<TextChangedEventHandler, TextChangedEventArgs>
(h => textBox.TextChanged += h, h => textBox.TextChanged -= h)
select ((TextBox)evt.Sender).Text;
var throttledInput = inputObservable.Throttle(TimeSpan.FromSeconds(.2)).DistinctUntilChanged();
//var throttledInput = inputObservable;
var loopupCallObservable = getAdherantsList(SearchTextBox.Text).ToObservable();
var matches = from input in throttledInput
from found in loopupCallObservable(input).TakeUntil(throttledInput)
select found;
matches.ObserveOnDispatcher().Subscribe(match =>
{
ShowHideMatchList(match, list);
});
}
但是我在粗体行上显示语法错误:方法名称已执行
but i have a syntax error on the bold line saying : Method Name Excpected
这篇关于需要一些帮助以适应旧的RX代码段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!