так из 3 следующих примеров, которые делают то же самое, я действительно склоняюсь к первому, но это действительно избыточна и злоупотребление LINQ, чтобы делать то, что путь, где вы можете создать все это как выражениеДолжен ли я создавать сложные вложенные структуры с Linq или традиционными циклами?
var Rand = new Random();
Hosts = "abcdef".Select(x =>
{
return new HostMachineToUpdate(x + "_Host",
Enumerable.Range(1, Rand.Next(3, 8))
.Select(y => new VirtualMachineToUpdate(x + y.ToString() + "_VM")).
ToList()
);
}
)
.ToList();
//traditional
Hosts = new List<HostMachineToUpdate>();
for (int x = (int)'a'; x < (int)'e'; x++)
{
var Guests = new List<VirtualMachineToUpdate>();
for (int y = 1; y < (new Random().Next(3, 8));y++)
{
Guests.Add(new VirtualMachineToUpdate((char)x + y.ToString() + "_VM"));
}
Hosts.Add(new HostMachineToUpdate((char) x + "Host",Guests));
}
//very traditional.
Hosts = new List<HostMachineToUpdate>();
int lower = (int)'a';
int upper = (int)'e';
for (int x = lower; x < upper; x++)
{
List<VirtualMachineToUpdate> Guests = new List<VirtualMachineToUpdate>();
int randomItemNum = new Random().Next(3, 8);
for (int y = 1; y < randomItemNum; y++)
{
string vmname = (char)x + y.ToString() + "_VM";
VirtualMachineToUpdate vm = new VirtualMachineToUpdate(vmname);
Guests.Add(vm);
}
string hostname = (char)x + "Host";
HostMachineToUpdate host = new HostMachineToUpdate(hostname, Guests);
Hosts.Add(host);
}
которые вы предпочитаете читать и обслуживать? –
Вы находите, что ваши случайные числа не так уж и случайны? Вы создаете много случайных экземпляров. Они посеяны с часами. Если часы не двигались в следующий раз, когда вы новый, то ... что тогда? Он будет засеян тем же значением, что и в прошлый раз. Используйте один случайный экземпляр, но не каждый раз, когда вам нужно случайное число. (Первая форма каждый раз для меня, кстати, я почти не каждый цикл с Linq) – spender
Я предпочитаю, чтобы в первую очередь для читаемости, ремонтопригодности, вот как я думаю на разных языках, однако я думаю, что это смутит коллег и т. Д., Которые не знакомы с такого рода вещи. – klumsy