Я уже несколько часов борюсь с этой проблемой, и я начинаю думать, что я слишком далеко от кроличьей дыры. Перед тем, как отказаться полностью, я надеюсь, что кто-то мог бы пролить некоторый свет на это для меня ...Использование GroupBy и SelectMany в унисон
public class Object
{
public Object()
{
Properties = new List<Property>();
}
public int Id { get; set; }
public IList<Property> Properties { get; set; }
}
public class Property
{
public string Name { get; set; }
public dynamic Value { get; set; }
}
[Test]
public void ShouldBeAbleToGroupAnArrayOfObjectsByASpecificProperty()
{
// Arrange
var objects = new List<Object>();
var doorObject = new Object() {
Properties = new List<Property>() {new Property() {Name = "Level", Value = "Level 1"}}
};
var wallobject = new Object() {
Properties = new List<Property>() { new Property() { Name = "Level", Value = "Level 2" } }
};
var chairObject = new Object() {
Properties = new List<Property>() { new Property() { Name = "Level", Value = "Level 2" } }
};
objects.Add(doorObject);
objects.Add(wallobject);
objects.Add(chairObject);
// Act
var groupBy = objects.SelectMany(obj => obj.Properties).GroupBy(props => props.Value);
// Assert
Assert.That(groupBy.Count(), Is.EqualTo(2));
}
Этот тест проходит, но проблема в том, что я возвращаюсь массив свойств. Я пытаюсь получить массив объектов. Это то, что я пытаюсь сделать возможным?
Если я правильно понимаю, вы пытаетесь сгруппировать объекты по свойству «Уровень» - что бы вы хотели, если бы существовал объект с множеством разных значений? – tzaman
@tzaman - Я не совсем уверен, что понял вопрос? Свойства могут иметь разные значения. В приведенном выше примере я хотел бы получить конечный результат: сгруппированный набор объектов, все сгруппированные по значению «Свойство» их коллекции свойств. На данный момент меня действительно не интересует отрицательный тестовый пример. Это помогает? –
Если в этой коллекции есть разные значения, в какую группу должен идти объект? то есть, если fooObject сказал, что оба уровня «Уровень 1» и «Уровень 2» в его наборе свойств должны быть в двух группах? – tzaman