我有List
个元素,这些元素通过async
调用WebService填充(没有问题)。
我需要过滤该列表才能在应用程序视图中显示某些内容。我试过这个:
List<DateTime> dates = EventsDates.Where(x => x.Day == tmp.Day && x.Month == tmp.Month && x.Year == tmp.Year).ToList();
我也尝试使用LINQ的Select
函数。问题是,无论何时调用此代码,都不会填充EventsDates
列表,WebService尚未响应。
我怎样才能尝试异步过滤EventsDates
列表?
答案 0 :(得分:6)
您可以像这样异步调用它,但正如其他人所说,您需要等待eventDates在使用之前从服务中解包响应。 @Dmitry的回答是正确的。我只是在这里回答你如何使用异步的问题,以备将来需要时使用。
using System.Data.Entity;
List<DateTime> dates = await EventsDates.Where(x => x.Day == tmp.Day && x.Month == tmp.Month && x.Year == tmp.Year).ToListAsync();
你也可以这样做:
var list = someCollection.Where(async x => x.Prop == await SomeLongRunningProcess());
答案 1 :(得分:4)
“哪里”不应该是异步,你需要做的事件日期填写等待。像这样:
EventsDates = await YourWebServiceMethodCall();
List<DateTime> dates = EventsDates.Where (x => x.Day == tmp.Day && x.Month == tmp.Month && x.Year == tmp.Year).ToList();
答案 2 :(得分:2)
您似乎并未{{}}将结果填充为await
。