Nicole Strain Ответов: 1

Кортеж искать значение без аварии, если значение null


Привет

У меня есть список кортежей, который я хочу, чтобы извлечь значение, место № 2, если базовая на поиск на элемент1.

В зависимости от места работы результаты могут не всегда иметь одни и те же элементы.

Напр.

Работы1
Item1 = HairStylistID Item2 = 01235
NailTechID Место № 1 Место № 2 = 1452

Произведения2
Item1 = HairStylistID Item2 = 08975

Я хочу иметь возможность хранить эти значения в переменных, но даже когда я устанавливаю свои поля на nullable, если он может найти совпадение в списке кортежей, он падает.

Любая помощь будет очень признательна
Спасибо

Что я уже пробовал:

Guid? NailTechID = list.Select(v => v.Item2).FirstOrDefault((t) => t.Item1 == "NailTechID");


Guid? NailTechID = list.Select(v => v.Item2).FirstOrDefault((t) => t.Item1 == "NailTechID") ?? new Guid("");

F-ES Sitecore

В дополнение к решению Ричарда о том, чтобы сначала фильтровать Item1, а затем выбирать Item2, вы ожидаете, что Item2 будет GUID, но в ваших данных вы не используете GUID в качестве второго типа элемента. Если имеющиеся у вас примеры данных точны, то было бы полезно добавить определение типа "список"

1 Ответов

Рейтинг:
7

Richard Deeming

Вам нужно отфильтровать перед тем, как проецировать:

var NailTechID = list.Where(v => v.Item1 == "NailTechID").Select(v => v.Item2).FirstOrDefault();


F-ES Sitecore

Незначительная придирка, но

var NailTechID = список.Где(v => v. Item1 == "NailTechID").Выберите(v => v. Item2).Метода firstordefault();

Richard Deeming

Д'О! Вот что я имел в виду. Исправлено.

Maciej Los

Извините, но не исправлено ;(
Прости, моя беда ;)
5ed!

George Swan

Могу ли я предложить вам использовать именованные кортежи,чтобы вы могли избежать ссылки на Item1, Item2, поскольку это подвержено ошибкам? Что-то вроде этого:
List<(int Id, string Name)> кортежи = новый список<(int, string)> { (1, "A"), (2, "B"), (1, "C") };
var id=кортежи.Где(v=> v.Id == 1).Выберите(п =&ГТ; В. ИД).Метода firstordefault();

George Swan

Извините, я должен был дать понять, что мой предыдущий комментарий был адресован оператору, а не Ричарду

Nicole Strain

Спасибо вам всем ! :-)