2016-07-28 106 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));