У меня есть такие классы модели:
public class Transaction
{
public Guid ID { get; set; }
public Guid CategoryID { get; set; }
public List<Guid> Tags { get; set; }
}
public class Category
{
public Guid ID { get; set; }
public string Caption { get; set; }
}
public class Tag
{
public Guid ID { get; set; }
public string Caption { get; set; }
}
Есть хранилище этих объектов. Еще у меня есть ViewModels:
public class TransactionViewModel
{
public Guid ID { get; set; }
public CategoryViewModel Category { get; set; }
public List<TagViewModel> Tags { get; set; }
}
public class CategoryViewModel
{
public Guid ID { get; set; }
public string Caption { get; set; }
}
public class TagViewModel
{
public Guid ID { get; set; }
public string Caption { get; set; }
}
Теперь мне нужно с помощью linq сделать List<TransactionViewModel> из List<Transaction>. Как сделал я:
Categories = ModelRepository.Categories.Select(p => new CategoryViewModel(p)));
Tags = ModelRepository.Tags.Select(p => new TagViewModel(p)));
var trans = from t in ModelRepository.Transactions
join c in Categories on t.CategoryID equals c.ID
select new TransactionViewModel()
{
...,
Category = c
};
Transactions = trans.ToList();
Теперь при изменении любого CategoryViewModel в Categories, я сразу получу изменения для всех TransactionViewModel.Category.
Вопрос - как мне заполнить TransactionViewModel.Tags? Желательно с помощью LINQ. И обязательно чтобы при изменении любого TagViewModel в Tags, я сразу получал изменения во всех TransactionViewModel.Tags.
Проблема с дизайном на лицо. Лучше еще раз его продумать, но в том, что я вижу сейчас, должно сработать такое:
var trans = from t in ModelRepository.Transactions
join c in Categories on t.CategoryID equals c.ID
select new TransactionViewModel
{
...,
Category = c,
Tags = t.Tags.Select(guid => Tags.First(tag => tag.ID == guid)).ToList()
};
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники