Я хочу оптимизировать некоторый код до меньшего количества строк и без необходимости использовать циклы for, используя LINQ, если это возможно. Я видел аналогичный пост с просьбой выбрать и где в одной строке, но это не совсем то же самое.
Предположим, у меня есть:
Список элементов в " fields " который имеет свойства " Id " и " Name ", которые можно получить, вызывая соответственно .Id и .Name
Ex.
fields[0] = Element
fields[0].Id = 12345
fields[0].Name = Name01
Я хочу создать новый список " FilterIds ", содержащий свойства Id выбранных полей.
This is the for loop version:
List<Id> filteredIds = new List<Id>();
fields = {Element1, Element2, ...}; //List of Elements
List<string> selectedNames = new List<string>() {"Name01", "Name05", "Name10"};
foreach (Element e in fields):
if (selectedNames.Contains(e.Name())
{
filteredIds.Add(e.Id);
}
Можно ли это сделать в одной строке, как это в LINQ?
filteredIds = fields.Select(i => i.Id).Any(o => selectedNames.Contains(o.Name)).ToList();