your goal is unclear. you goal unclear, linq is for returning an mapping of an object, but you code just does an update. as linq does not have a ForEach() as it does not designed for void results, what did you want the result to be?
assuming you don't care what's returned (this sample is a collection of collection of ints):
Fruits.Select(async fruit => (await _fruitRepository.GetFruitAsync(fruit.fruitId))
.colors
.Select(async color =>
{
var fruitColor = await _colorRepository.GetColorAsync(color.colorId);
await _FruitColorRepository.SaveFruitColorAsync(fruit.fruitId, fruitColor);
return 0; // don't keep allocations
})
);