2016-07-28 105 views
-3

我对LINQ很陌生,使用别人的代码,并希望尽可能少地编辑它。过滤任务结果Task.WhenAll

我想弄清楚如何让下面的代码忽略有空数字的人。

return new ReadOnlyCollection<numbertype>(
    await Task.WhenAll(people.name.Concat(people.name) 
            .Distinct() 
            .Select(person => GetnumberAsync(person))) 
); 
private static anync Task<numbertype> GetnumberAsync(Person person) 
{ 
    // Do Some Stuff 
    return validnumber.FirstOrDefault(); 
} 

如何过滤得到的IEnumerable<Task<numbertype>>只非空值?

+0

发布'GetNumberAsync'的代码,因为这可能是问题所在。 – Tim

+0

取决于'GetNumberAsync'的返回类型,类似'.Select(person => GetNumberAsync(person)!= null)'?很难说没有更多的代码。 – Tim

+0

尝试.Select(person => GetNumberAsync(person)!= null)并获取错误无法从bool转换为任务。我无法分享许多代码。 – Dawn555

回答

0

我会这样做的两个步骤。你可能可能能够使语法与一个工作,但它不值得。

var ret = await Task.WhenAll(people.name.Concat(people.name) 
             .Distinct() 
             .Select(person => GetnumberAsync(person))); 

return new ReadOnlyCollection<numbertype>(ret.Where(c => c != null));