テーブルから新しいモデルにEntity Frameworkを使用してLambda Selectを実行しようとしていますが、非同期メソッドを呼び出して各インスタンスのプロパティを返す必要があります設定:ラムダでの選択中に待機する方法
await Task.WhenAll(_context.UserContacts.Where(uc => uc.UserId == user.Id).Select(async uc => new MailContact
{
Email = uc.Contact.Email,
UserId = uc.Contact.UserId,
ContactId = uc.Contact.Id,
Name = uc.Contact.UserId != null ? await _graphService.GetUserByIdAsync(uc.Contact.UserId) : null;
}
私はLINQのは/非同期のawaitのための限定的なサポートを持っていることを理解し、私は非同期部分が別々のループに移動されStackOverflowの上の他のいくつかの例を、例えば見てきた:
How to await a method in a Linq query
T[] data = await Task.WhenAll(contacts.Select(c => LoadDataAsync(c)));
しかし、非同期メソッドでは許可されていない参照渡し以外は、このメソッドは "c"と呼ばれるオブジェクトを更新しません。
nameプロパティを正しく設定する最も効率的な方法を説明できる人はいますか?
;:
とこれに割り当てを変更します'Not'はTask.WhenAll(tasks); ' –
を待っています@MetroSmurf:修正しました! –
そうだね。新しい動的プロパティにすべてのプロパティを再選択することはできません:) – RNDThoughts