Присвойте правильные значения столбцам после их группировкиC#

Место общения программистов C#
Ответить
Anonymous
 Присвойте правильные значения столбцам после их группировки

Сообщение Anonymous »

У меня есть список из трех строк, я сравниваю их друг с другом при определенном условии, чтобы проверить, совпадают ли они с какими-либо. Если они совпадают, мне нужно агрегировать сумму внутреннего списка.
Ниже приведен список, который у меня есть. Мне нужно проверить, идентичны ли значения Property1, Property2 и Property4 (которые находятся в InnerList). Если они идентичны, мне нужно добавить столбец «Процент» во внутренний список для конкретного значения Property4, а затем отобразить также другие соответствующие свойства.
{
List:[
{
Property1: "Apple",
Property2: "Fruit",
Property3: "USA",
Name: "aaa",
InnerList:[{Property4 : 100,Percentage: 50.00}]
},
{
Property1: "Apple",
Property2: "Fruit",
Property3: "USA",
Name: "aaa",
InnerList:[{Property4 : 100,Percentage: 50.00},
{Property4 : 50,Percentage: 50.00}]
},
{
Property1: "Mango",
Property2: "Fruit",
Property3: "INDIA",
Name: "bbb",
InnerList:[{Property4 : 75,Percentage: 50.00}]
}
]}

Я использую приведенный ниже запрос для их группировки и агрегирования. Логика группировки и агрегирования работает отлично, но я не могу получить правильные значения для других столбцов (значения Property3 и Name)
Query used:

var result = list
.GroupBy(x => new { x.Property1, x.Property2 })
.Select(g => new
{
g.Key.Property1,
g.Key.Property2,
list[0].Property3,// not sure how to assign the correct value for Property3, Name for different groups
list[0].Name, // It assigns only the List[0] value for all groups, but need its correct value for that group
InnerList = g.SelectMany(x => x.InnerList)
.GroupBy(x => x.Property4)
.Select(g2 => new InnerList
{
Property4 = g2.Key,
Percentage = g2.Sum(x => x.Percentage)
})
});

Ожидается
{
List:[
{
Property1: "Apple",
Property2: "Fruit",
Property3: "USA",
Name: "aaa",
InnerList:[{Property4 : 100,Percentage: 100.00},
{Property4 : 50,Percentage: 50.00}]
},
{
Property1: "Mango",
Property2: "Fruit",
Property3: "INDIA",
Name: "bbb",
InnerList:[{Property4 : 75,Percentage: 50.00}]
}
]}


Подробнее здесь: https://stackoverflow.com/questions/745 ... uping-them
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»