Принудительно использовать FirstOrDefault, чтобы вернуть ноль - PullRequest
0 голосов
/ 24 марта 2019

Мне нужно вернуть null, если элемент не найден в списке, но он возвращает пустой guid.

mappedTypes.Where(x => x.ReferenceId == new Guid("1a087b71-638c-4f3c-b1cf-3b0438c181c0")).Select(x=>x.MappingId).FirstOrDefault()

Этот запрос просто возвращает '00000000-0000-0000-0000-000000000000' - и я хочу вернуть null - или одно значение guid, если оно существует.

Ответы [ 2 ]

3 голосов
/ 24 марта 2019

Вы можете выбрать его с приведением к Guid?:

mappedTypes.Where(x => x.ReferenceId == new Guid("1a087b71-638c-4f3c-b1cf-3b0438c181c0"))
           .Select(x => (Guid?) x.MappingId)
           .FirstOrDefault();

Смотрите также: Обнуляемые типы (Руководство по программированию в C #)

0 голосов
/ 24 марта 2019

Вы можете использовать FirstOrDefault в вашем случае. Но это даст вам ноль, если нет записей, удовлетворяющих условию (потому что при отсутствии первого значения это даст вам значение по умолчанию, для объектов ссылочного типа значение по умолчанию равно нулю). Вы можете проверить обнуляемые типы, используя ?.:

mappedTypes.FirstOrDefault(x => x.ReferenceId ==new Guid("1a087b71-638c-4f3c-b1cf-3b0438c181c0"))?.MappingId;
...