Я уже писал об этом раньше, но плохо сформулировал. Я пытаюсь снова с более хорошо продуманной структурой.
У меня есть следующий код, и я пытаюсь выяснить более короткое выражение linq, чтобы сделать его «встроенным». Пожалуйста, проверьте метод "Run ()" внизу. Я пытаюсь понять, как объединить два словаря на основе совпадающего идентификатора в одном из объектов, чтобы я мог использовать запрос в синтаксисе такого рода.
var selected = from a in items.List()
// etc. etc.
select a;
чтобы я мог определить свою структуру в коде как ...
TModelViewModel = new TModelViewModel
{
TDictionary = from a in items... etc. etc...
}
вместо прохождения нескольких циклов foreach, дополнительных объявлений объектов и т. Д.
Это моя классовая структура. Метод Run () - это то, что я пытаюсь упростить. В основном мне нужно сделать это преобразование встроенным в нескольких местах, и я хотел значительно упростить его, чтобы я мог определить его более «чисто».
class TModel
{
public Guid Id { get; set; }
}
class TModels : List<TModel>
{
}
class TValue
{
}
class TStorage
{
public Dictionary<Guid, TValue> Items { get; set; }
}
class TArranged
{
public Dictionary<TModel, TValue> Items { get; set; }
}
static class Repository
{
static public TItem Single<TItem, TCollection>(Predicate<TItem> expression)
{
return default(TItem); // access logic.
}
}
class Sample
{
public void Run()
{
TStorage tStorage = new TStorage();
// access tStorage logic here.
Dictionary<TModel, TValue> d = new Dictionary<TModel, TValue>();
foreach (KeyValuePair<Guid, TValue> kv in tStorage.Items)
{
d.Add(Repository.Single<TModel, TModels>(m => m.Id == kv.Key),kv.Value);
}
}
}