2016-07-28 14 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(); 
} 

どのように私は唯一の非null値に結果IEnumerable<Task<numbertype>>をフィルタリングすることができますか?

+0

「GetNumberAsync」のコードは、おそらく問題がある場所に掲載してください。 – Tim

+0

'GetNumberAsync'の戻り値の型によって' .Select(person => GetNumberAsync(person)!= null) 'のようなものがありますか?より多くのコードなしで言うのは難しい。 – Tim

+0

試してみてください。(person => GetNumberAsync(person)!= null)、エラーがboolからtaskに変換されません。私はコードの多くを共有することはできません。 – Dawn555

答えて

0

私は2つのステップとして実行します。 で構文を動作させることは可能ですが、それは価値がありません。

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

return new ReadOnlyCollection<numbertype>(ret.Where(c => c != null)); 
関連する問題