Имея следующие модели (я отправляю интерфейсы для простоты).Объединить 3 разных типа списков в одном новом списке типов
public class LengthViewModel
{
public int Length { get; set; }
public string Category { get; set; }
}
public class SlopeViewModel
{
public int Slope { get; set; }
public string Category { get; set; }
}
public class RatingViewModel
{
public double Rating { get; set; }
public string Category { get; set; }
}
У меня тогда есть в другой ViewModel ObservableCollection каждого типа.
public ObservableCollection<LengthViewModel> Lengths { get; set; }
public ObservableCollection<SlopeViewModel> Slopes { get; set; }
public ObservableCollection<RatingViewModel> Ratings { get; set; }
Мне нужно преобразовать приведенные выше списки в один список, ниже - новый тип списка, который должен быть создан.
public ObservableCollection<LengthSlopeRatingViewModel> Aggregate { get; set; }
public class LengthSlopeRatingViewModel
{
public string Category { get; set; }
public int Length { get; set; }
public int Slope { get; set; }
public double Rating { get; set;}
}
Что я пробовал до сих пор, но, похоже, задерживается, как выбирать свойства для каждого преобразованного списка.
var lengths = Lengths.Select(p => new LengthSlopeRatingViewModel
{
Category = p.Category,
Length = p.Length
});
var slopes = Slopes.Select(p => new LengthSlopeRatingViewModel
{
Category = p.Category,
Slope = p.Slope
});
var ratings = Ratings.Select(p => new LengthSlopeRatingViewModel
{
Category = p.Category,
Rating = p.Rating
});
// Concat and group them, then select new type again with the properties?
CourseRatings = lengths.Concat(slopes)
.Concat(ratings)
.GroupBy(p => p.Category)
.Select(g => g.ToList())
.As<IEnumerable<LengthSlopeRatingViewModel>>()
.ToObservableCollection();
Например, если у вас есть экземпляр с длиной, наклоном и рейтинг и Category = "Black"
и другом случае с Category = "Blue"
я должен получить два экземпляра LengthSlopeRatingViewModel, один с Category = "Black"
и соответствующие значения первого матча и один с Category = "Blue"
,
Не следует ли «Выбрать» после 'GroupBy'' SelectMany'? – KMoussa
Пожалуйста, приложите больше усилий для форматирования кода при задании вопросов - нет необходимости, чтобы большая часть его была отступена далеко вправо. На этот раз я редактирую вопрос. Похоже на то, что вы действительно хотите здесь, это пара объединений, если честно ... вы также должны сказать, что вы хотите, если категория находится только в одной или двух из оригинальных коллекций. –
Я признаю, что для этого нужно немного поработать над вопросом, и теперь я вижу присоединение, я немного застрял, спасибо за редактирование :-) –