У меня есть такие классы модели:
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()
};
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как я могу получить доступ к компонентам (например: treeView, combobox,editText) из формы Form1 в UserControl?
Как из компонента listBox отобразить имя автора музыки в label1, а название композиции label2? Пользователь нажимает button который воспроизводит композицию,...
Добрый вечерКак можно проверить формат файла? Если формат текстового документа, то принимаем, а если нет, то ловим исключение