У меня есть эти три цикла for
foreach (var entityView in entitiesWithLookups)
{
IEnumerable<string> fieldNamesForAttributeLookup = entityView.Attributes.Where(x => x.Type == DataType.Lookup)
.Select(x => x.InternalName);
var entityRegistrationsWithLookups =
ReadEntityRegistrations(entityView.InternalName, DateTime.Now);
foreach (var entityRegistration in entityRegistrationsWithLookups)
{
foreach (var fieldName in fieldNamesForAttributeLookup)
{
output.Add(new ReferenceView()
{
EntityName = entityView.InternalName,
ForeignKey = long.Parse(entityRegistrationView.Attributes[fieldName].ToString()),
ValidFrom = entityRegistration .ValidFrom,
ValidTo = entityRegistration .ValidTo,
});
}
}
}
Три цикла foreach используются для получения параметра, необходимого для создания ReferenceView
, и добавления его в список вывода.
Is как-то можно оптимизировать это?
Я пытаюсь использовать resharper и получил это
from entityView in entitiesWithLookups
let fieldNamesForAttributeLookup = entityView.Attributes.Where(x => x.Type == DataType.Lookup)
.Select(x => x.InternalName)
let entityRegistrationsWithLookups = ReadEntityRegistrations(entityView.InternalName, DateTime.Now)
from entityRegistration in entityRegistrationsWithLookups
from fieldName in fieldNamesForAttributeLookup
select new ReferenceView()
{
EntityName = entityView.InternalName,
ForeignKey = long.Parse(entityRegistrationView.Attributes[fieldName].ToString()),
ValidFrom = entityRegistration.ValidFrom,
ValidTo = entityRegistration.ValidTo
}).ToList();
но действительно ли это оптимизировано? Это не кажется очень читабельным?