Поиск элемента через Linq
Есть некоторый класс, который висит на объектах ob1 и каждому присвоен индивидуальный index.
public class CustomClass : MonoBehaviour {
public int index;
}
В основном классе находится динамический массив таких объектов вида:
List<List<GameObject>> allObjects = new List<List<GameObject>>();
allObjects.Add(new List<GameObject> { ob1, ob2});
allObjects.Add(new List<GameObject> { ob1, ob2});
allObjects.Add(new List<GameObject> { ob1, ob2});
Элементы в allObjects могут идти не по порядку. Подскажите, как найти позицию динамического массива List<GameObject> в allObjects, в котором ob1 содержит нужный индекс в CustomClass? Хочется реализовать это через Linq. Пробовал наподобие такой конструкции:
allObjects.Select(x => x[0].GetComponent<CustomClass>().index == i)
но не уверен, что это правильно и не знаю как далее получить позицию элемента в allObjects, для которого условие выполнено. Подскажите как это реализовать через Linq.
Ответы (1 шт):
Select преобразует последовательность через делегать, а чтобы искать первый элемент по условию, есть First или FirstOrDefault.
var list = allObjects.First(x => x[0].GetComponent<CustomClass>().index == i);
Можно получить и индекс, правда непонятно, зачем
int index = allObjects.IndexOf(list);