Нужно вставить строку, если массив возвращает пустой, используя запросы linq - PullRequest
0 голосов
/ 03 апреля 2019

Вот мой видМодель:

private AttachmentViewModel MapAttachmentViewModel(WorkOrderAttachment attachment)
    {

        var fileInfo = _fileService.GetFileInformation(attachment.FileLog);
        return new AttachmentViewModel
        {
            Id = attachment.Id,
            Exists = fileInfo.Exists,
            FileExtension = fileInfo.Extension,
            FileName = fileInfo.FileName,
            Title = attachment.Title,
            Description = attachment.Description,
            UploadedBy = attachment.CreatedBy,
            UploadedDate = attachment.DateCreated,
            **Categories = attachment.CategoryMappings
                .Select(x => x.WorkOrderAttachmentCategory)
                .Select(x => x.Name) 
                .ToArray()** 


        };
    }

пример:

Для категорий мне нужно возвращать имена категорий, но если он возвращает пустое или нулевое значение, я бы хотел, чтобы оно по умолчанию считалось "без категории".

1 Ответ

2 голосов
/ 03 апреля 2019

Вы можете использовать DefaultIfEmpty , например:

Categories = attachment.CategoryMappings
                .Select(x => x.WorkOrderAttachmentCategory)
                .Select(x => x.Name).DefaultIfEmpty("uncategorized")
                .ToArray()

это будет обрабатывать, если коллекция равна нулю (элемент не имеет "CategoryMappings"). Но если ваше «x.Name» является пустой строкой или пробелом, вы также должны позаботиться об этом в своем выражении «Select (x => x.Name)», например:

Select(x => x.Name==null || x.Name==String.Empty?"uncategorized":x.Name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...