Невозможно присвоить значение списку - PullRequest
0 голосов
/ 16 января 2019

Я использую приложение MVC. Это моя модель.

public class Fruit
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public List<Colors> ColorsList { get; set; }

}

public class Colors
{
    public string ColorId { get; set; }
    public string ColorName { get; set; }
    public string ColorDescription { get; set; }
}

И мой запрос в Linq:

var lstfruits = db.Fruits.Select(c => new Fruit {Id=c.Id, Name = c.Name, Description = c.Description });

foreach (var fruit in lstfruits)
{
    var lstColor = new List<Colors>();
    lstColor = db.Color.Where(f => f.FruitId == fruit.Id)
                       .Select(f => new Colors {ColorId=f.Id.ToString(), ColorName = f.Name, ColorDescription = f.Description })
                       .ToList();
    fruit.ColorsList = lstColor;
}

return lstfruits;

При отладке lstColor не является нулем после запроса, но lstfruits всегда имеет значение ColorsList = null для всех элементов. Чего мне не хватает?

Я знаю, что мои запросы работают нормально, потому что я получаю ожидаемые значения от обоих запросов при отладке. Проблема заключается в назначении его на fruits.ColorsList внутри цикла for.

1 Ответ

0 голосов
/ 16 января 2019

Конвертируйте foreach в цикл For.

for(int i=0;i<lstfruits.Count();i++)
{

    var lstColor = new List<Colors>();
    lstColor = db.Color.Where(f => f.FruitId == lstfruits[i].Id)
                       .Select(f => new Colors {ColorId=f.Id.ToString(), ColorName = f.Name, ColorDescription = f.Description })
                       .ToList();
    lstfruits[i].ColorsList = lstColor;
}

Вы можете на самом деле покончить с инициализацией списка внутри цикла с помощью

for(int i=0;i<lstfruits.Count();i++)
{

    lstfruits[i].ColorsList = db.Color.Where(f => f.FruitId == lstfruits[i].Id)
                       .Select(f => new Colors {ColorId=f.Id.ToString(), ColorName = f.Name, ColorDescription = f.Description })
                       .ToList();

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...