У меня есть вложенный список настраиваемого объекта, переданного из службы в виде JSON, который мне нужен для реструктуризации в новый объект. Вот объект, вложенный список состоит из:Вложенный список LINQ Group для реструктуризации данных
public class Alt
{
public Member Member { get; set; }
public Claim OriginalClaim { get; set; }
public Claim AltClaim { get; set; }
public double Savings { get; set; }
}
Для каждого члена и OriginalClaim, может быть один или более AltClaim. Так что я пытаюсь сделать каждый AltClaim для каждого члена/OriginalClaim. Новый объект, который я буду отображение данных на внешний вид, как это:
public class Alternative
{
public Member Member { get; set; }
public Claim OriginalClaim { get; set; }
public List<AlternativeClaim> AlternativeClaims { get; set; }
}
public class AlternativeClaim
{
public Claim AltClaim { get; set; }
public double Savings { get; set; }
}
Я был в состоянии получить вещи, сгруппированных с помощью LINQ, но производит список Alternative с членом и OriginalClaim дублируется как многие как есть AlternativeClaims. Вот код, который у меня до сих пор:
public void Test(List<List<Alt>> alternatives)
{
var test = from alts in alternatives
from alt in alts
group alts by new { alt.Member, alt.OriginalClaim } into a
select a;
foreach (var a in test)
{
Console.WriteLine("Auth {0}", a.Key.OriginalClaim.Id);
Console.WriteLine("MemberId {0}", a.Key.Member.Id);
foreach (var alt in a.SelectMany(x => x))
{
[write out alt.AltClaim properties in console here]
}
}
}
Я считаю, что моя проблема связана с запросом LINQ. Я не очень хорошо знаком с LINQ, так есть ли кто-нибудь там, который может помочь мне сформировать это (или, по крайней мере, указать мне в правильном направлении), чтобы я не получал дубликаты? Благодаря!!
EDIT (РАСТВОР):
Решение, которое работало для меня было сочетание двух ответов ниже. The accepted answer - это запрос LINQ, который я использовал, но мне не удалось заставить вещи правильно группироваться без Thomas F's answer. Реализация IEquatable <> в классах, которые я группировал, была ключевой.
Спасибо всем! Вы научили меня многого с вашей помощью по этому вопросу.
Methinks, это опечатка 'группа alts' и должна быть' группа alt'? а также простой выбор вместо selectmany – Grundy
вы можете показать, какой альтернативы есть? Почему список списков? –
@MichalCiechan У вас есть основы того, что альтернатива держится в вашем ответе. Что касается вложенного списка, это то, что возвращается из службы. В основном 'List' отправляется, и служба возвращает 'List ' для каждого элемента отправленного списка. К сожалению, это запутанно. –
Tim