0
用LINQ可以實現這一點嗎?我有一個從數據庫填充的類。有孩子和他的父母信息。兒童姓名,姓氏,班級信息,聯繫人。父母姓名,聯繫人。孩子可能有多個父母。Linq強類型嵌套列表
public class KontaktiniaiDuomenysPartialViewModel
{
/// <summary>
/// Child ID
/// </summary>
public long AsmenysId { get; set; }
/// <summary>
/// Child name
/// </summary>
public string Vardas { get; set; }
/// <summary>
/// Child surname
/// </summary>
public string Pavarde { get; set; }
/// <summary>
/// Child class ID
/// </summary>
public long KlasesId { get; set; }
/// <summary>
/// Child class name
/// </summary>
public string KlasesPavadinimas { get; set; }
/// <summary>
/// Child phone
/// </summary>
public string Telefonas { get; set; }
/// <summary>
/// Child mobile phone
/// </summary>
public string MobilusTelefonas { get; set; }
/// <summary>
/// Child email
/// </summary>
public string El_pastas { get; set; }
/// <summary>
/// Child Address
/// </summary>
public string Adresas { get; set; }
/// <summary>
/// Child father's/mother's id
/// </summary>
public long TevoAsmenysId { get; set; }
/// <summary>
/// Child father's/mother's address
/// </summary>
public string TevoAdresas { get; set; }
/// <summary>
/// Child father's/mother's name
/// </summary>
public string TevoVardas { get; set; }
/// <summary>
/// Child father's/mother's surname
/// </summary>
public string TevoPavarde { get; set; }
/// <summary>
/// Child father's/mother's email
/// </summary>
public string TevoElPastas { get; set; }
/// <summary>
/// Child father's/mother's phone
/// </summary>
public string TevoTelefonas { get; set; }
/// <summary>
/// Child father's/mother's phone
/// </summary>
public string TevoMobilusTelefonas { get; set; }
}
實施例填充這個類:
List<KontaktiniaiDuomenysPartialViewModel> data = new List<KontaktiniaiDuomenysPartialViewModel>();
KontaktiniaiDuomenysPartialViewModel data1 = new KontaktiniaiDuomenysPartialViewModel();
data1.AsmenysId = 1;
data1.Vardas = "Petras";
data1.Pavarde = "Petraitis";
data1.KlasesId = 2;
data1.KlasesPavadinimas = "k1";
data1.Telefonas = "860000000";
data1.MobilusTelefonas = "870000000";
data1.El_pastas = "[email protected]";
data1.Adresas = "balt23";
// Petras mother info
data1.TevoAsmenysId = 3;
data1.TevoVardas = "Dalia";
data1.TevoPavarde = "zuk";
data1.TevoElPastas = "[email protected]";
data1.TevoTelefonas = "861111111";
data1.TevoMobilusTelefonas = "862222222";
data1.TevoAdresas = "Kaunas";
KontaktiniaiDuomenysPartialViewModel data2 = new KontaktiniaiDuomenysPartialViewModel();
data2.AsmenysId = 1;
data2.Vardas = "Petras";
data2.Pavarde = "Petraitis";
data2.KlasesId = 2;
data2.KlasesPavadinimas = "k1";
data2.Telefonas = "860000000";
data2.MobilusTelefonas = "870000000";
data2.El_pastas = "[email protected]";
data2.Adresas = "balt23";
// Petras father info
data2.TevoAsmenysId = 4;
data2.TevoVardas = "juoz";
data2.TevoPavarde = "luk";
data2.TevoElPastas = "[email protected]";
data2.TevoTelefonas = "863333333";
data2.TevoMobilusTelefonas = "864444444";
data2.TevoAdresas = "Vilnius";
KontaktiniaiDuomenysPartialViewModel data3 = new KontaktiniaiDuomenysPartialViewModel();
data3.AsmenysId = 2;
data3.Vardas = "Eivis";
data3.Pavarde = "Konc";
data3.KlasesId = 5;
data3.KlasesPavadinimas = "k5";
data3.MobilusTelefonas = "880000000";
data3.Telefonas = "865555555";
data3.El_pastas = "[email protected]";
data3.Adresas = "balt28";
// Eivis father info
data3.TevoAsmenysId = 5;
data3.TevoVardas = "obb";
data3.TevoPavarde = "tre";
data3.TevoElPastas = "[email protected]";
data3.TevoTelefonas = "866666666";
data3.TevoMobilusTelefonas = "867777777";
data3.TevoAdresas = "KLP";
data.Add(data1);
data.Add(data2);
data.Add(data3);
欲組數據到這個類:
public class KontaktiniaiDuomenysPartialViewModelGrouped
{
/// <summary>
/// Child id
/// </summary>
public long AsmenysId { get; set; }
/// <summary>
/// Child name
/// </summary>
public string Vardas { get; set; }
/// <summary>
/// Child surname
/// </summary>
public string Pavarde { get; set; }
/// <summary>
/// Child class
/// </summary>
public KlaseModels Klase { get; set; }
/// <summary>
/// Child father's/mother's info
/// </summary>
public IList<TevoKontaktai> Tevaii { get; set; }
/// <summary>
/// Child contacts
/// </summary>
public KontaktiniaiDuomenysModel Kontaktai { get; set; }
}
額外類:
public class KlaseModels
{
/// <summary>
/// child class id
/// </summary>
public long Id { set; get; }
/// <summary>
/// Child class name
/// </summary>
public string Pavadinimas { set; get; }
}
public class TevoKontaktai
{
/// <summary>
/// Child father's/mother's id
/// </summary>
public long AsmenysId { get; set; }
/// <summary>
/// Child father's/mother's name
/// </summary>
public string Vardas { get; set; }
/// <summary>
/// Child father's/mother's surname
/// </summary>
public string Pavarde { get; set; }
/// <summary>
/// Child father's/mother's contacts
/// </summary>
public KontaktiniaiDuomenysModel Kontaktai { get; set; }
}
public class KontaktiniaiDuomenysModel
{
/// <summary>
/// Child father's/mother's email
/// </summary>
public string ElPastas { get; set; }
/// <summary>
/// Child father's/mother's phone
/// </summary>
public string Telefonas { get; set; }
/// <summary>
/// Child father's/mother's mobile phone
/// </summary>
public string MobilusTelefonas { get; set; }
/// <summary>
/// Child father's/mother's address
/// </summary>
public string Adresas { get; set; }
}
預期結果:
IList<KontaktiniaiDuomenysPartialViewModelGrouped> afterLinq
afterLinq[0]
afterLinq[0].AsmenysId = 1
afterLinq[0].Vardas = "Petras"
afterLinq[0].Pavarde = "Petraitis"
afterLinq[0].Klase.Id = 2
afterLinq[0].Klase.Pavadinimas = "k1"
afterLinq[0].Kontaktai.ElPastas = "[email protected]"
afterLinq[0].Kontaktai.Telefonas = "860000000"
afterLinq[0].Kontaktai.MobilusTelefonas = "870000000"
afterLinq[0].Kontaktai.Adresas = "balt23"
afterLinq[0].Tevaii[0].AsmenysId = 3
afterLinq[0].Tevaii[0].Vardas = "Dalia"
afterLinq[0].Tevaii[0].Pavarde = "zuk"
afterLinq[0].Tevaii[0].Kontaktai.ElPastas = "[email protected]"
afterLinq[0].Tevaii[0].Kontaktai.Telefonas = "861111111"
afterLinq[0].Tevaii[0].Kontaktai.MobilusTelefonas = "862222222"
afterLinq[0].Tevaii[0].Kontaktai.Adresas = "Kaunas";
afterLinq[0].Tevaii[1].AsmenysId = 4
afterLinq[0].Tevaii[1].Vardas = "juoz"
afterLinq[0].Tevaii[1].Pavarde = "luk"
afterLinq[0].Tevaii[1].Kontaktai.ElPastas = "[email protected]"
afterLinq[0].Tevaii[1].Kontaktai.Telefonas = "863333333"
afterLinq[0].Tevaii[1].Kontaktai.MobilusTelefonas = "864444444"
afterLinq[0].Tevaii[1].Kontaktai.Adresas = "Vilnius";
afterLinq[1]
afterLinq[1].AsmenysId = 2
afterLinq[1].Vardas = "Eivis"
afterLinq[1].Pavarde = "Konc"
afterLinq[1].Klase.Id = 5
afterLinq[1].Klase.Pavadinimas = "k5"
afterLinq[1].Kontaktai.ElPastas = "[email protected]"
afterLinq[1].Kontaktai.Telefonas = "865555555"
afterLinq[1].Kontaktai.MobilusTelefonas = "880000000"
afterLinq[1].Kontaktai.Adresas = "balt28"
afterLinq[1].Tevaii[0].AsmenysId = 5
afterLinq[1].Tevaii[0].Vardas = "obb"
afterLinq[1].Tevaii[0].Pavarde = "tre"
afterLinq[1].Tevaii[0].Kontaktai.ElPastas = "[email protected]"
afterLinq[1].Tevaii[0].Kontaktai.Telefonas = "866666666"
afterLinq[1].Tevaii[0].Kontaktai.MobilusTelefonas = "867777777"
afterLinq[1].Tevaii[0].Kontaktai.Adresas = "KLP";
你試過了什麼? –
一些建議:減少你的模型,問題仍然與你的班級中的2個屬性和16個屬性相同。這太方便了,誰會讀這個問題的負擔,所以人們會跳過這個問題。它也可能有助於將事情變爲英語,所以人們會知道每個財產的含義,而不是猜測或再次跳過問題。 –