запрос linq .ToList() в json

#json #ajax #linq

#json #аякс #linq

Вопрос:

Я хотел бы отобразить список фотографий с именем файла из базы данных.

У меня есть следующий запрос:

 var queryList = (from media in _context.Medias
    where media.ProductId == Id
    orderby media.MediaOrder
    select new ProductMediaList
    {
    MediaName = "<div><img src='https://www.example.com/img/"   media.MediaName   "' class='img - thumbnail' style='width: 150px' /></div>"
    }).ToList();
 

На мой взгляд:

     $(".call_ajax").click(function () {
        var id = $(this).attr("data-id");
        $.ajax({
            type: 'POST',
            url: '',
            dataType: 'json',
            data: {
                Id: id
            },
            success: function (data) {
                detaildata = data.MediaName
            },
            error: function (ex) {
                var r = "There is a problem";
                alert("Message: "   r);
            }
        });
        return false;
    });
 

Отлично работает с .FirstOrDefault(), но не может заставить его работать дальше.ToList()

Конечно, мы можем иметь html-часть в js, а не в запросе

Заранее благодарю за вашу помощь.

Комментарии:

1. Что вы подразумеваете под не работает? Пожалуйста, проверьте консоль вашего браузера на наличие ошибок. Ваш код javascript ожидает получения одного объекта со свойством MediaName и, вероятно, именно поэтому он работает с. FirstOrDefault() Если вы используете ToList() , эта строка больше не имеет смысла: data.MediaName as data теперь является массивом. Вы должны выполнить итерацию data и получить MediaName для каждого элемента в массиве.

2. спасибо @derloopkat. Это моя проблема. Как мне получить MediaName для каждого элемента в массиве?

3. Вы можете выполнить простой forEach() или for цикл. Погуглите синтаксис.

4. Спасибо @derloopkat. Когда я выполняю for (var m в data) { detaildata = detaildata data[m]; }, я получаю [объект Object][объект Object][объект Object][объект Object][объект Object]