使用Linq过滤异步的位置

时间:2015-11-24 16:00:37

标签: c# linq asynchronous

我有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列表?

3 个答案:

答案 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