C# C打印列表|每两个列表
我打印列表时遇到问题,因为我在两个单独的列表中有必要的信息 目前我知道如何从一个列表中打印出来,但不知道如何使用两个列表打印出来C# C打印列表|每两个列表,c#,list,foreach,printing,C#,List,Foreach,Printing,我打印列表时遇到问题,因为我在两个单独的列表中有必要的信息 目前我知道如何从一个列表中打印出来,但不知道如何使用两个列表打印出来 public static void PregledSvihPolicaOsiguranja() { List<PoliceOsiguranja> lPoliceOsiguranja = DohvatiPoliceOsiguranja(); List<Klijent> lKlijent = DohvatiKlijente();
public static void PregledSvihPolicaOsiguranja()
{
List<PoliceOsiguranja> lPoliceOsiguranja = DohvatiPoliceOsiguranja();
List<Klijent> lKlijent = DohvatiKlijente();
var table = new ConsoleTable("OIB", "Broj Police", "Vrsta Osiguranja", "Ime i prezime", "Datum pocetka", "Datum isteka", "Vrijednost");
foreach (var PoliceOsiguranja in lPoliceOsiguranja)
{
table.AddRow(PoliceOsiguranja.OIB, PoliceOsiguranja.BrojPolice, PoliceOsiguranja.VrstaOsiguranja, PoliceOsiguranja.Ime + " " + PoliceOsiguranja.Prezime, PoliceOsiguranja.DatumPocetka, PoliceOsiguranja.DatumIsteka, PoliceOsiguranja.Vrijednost) ;
}
table.Write();
}
这一部分policosiguranja.Ime++policosiguranja.Prezime应该使用列表lkligent并从该JSON文件中打印Ime名称和Prezime姓氏
谢谢大家!
编辑:
我尝试过使用Zip,但它对我不起作用如果您对打印客户的特定策略感兴趣,那么也许可以这样做
foreach (var client in lKlijent)
{
PoliceOsiguranja policy = lPoliceOsiguranja.Where(x => x.OIB == client.OIB).FirstOrDefault();
table.AddRow(policy.property1, policy.property2, client.property1, client.property2) ;
}
根据数据的外观,您可能必须运行多个foreach循环。如果每个客户机都有一个策略,那么上面的方法就行了。如果每个策略有一个客户机,则可以翻转循环并使用策略作为循环,并根据正在迭代的策略查找客户机
如果每个策略都有多个客户端,那么最好使用单独的foreach循环
foreach (var policy in lPoliceOsiguranja)
foreach (var client in lKlijent.Where(x => x.OID == policy.OID))
table.AddRow(policy.property1, policy.property2, client.property1, client.property2);
同样的逻辑,如果每个客户机都有多个策略,那么首先翻转循环并迭代客户机,然后迭代匹配client.OID的策略。因为我没有太多的东西要从代码中学习,所以我将给您一个更通用的使用Zip的示例。例如,让我们假设这些是您的类
public class PoliceOsiguranja
{
public string OIB { get; set; }
}
public class Klijent
{
public string OIB { get; set; }
}
我们将创建一个表示组合的新类
public class Combination
{
public PoliceOsiguranja A { get; set; }
public Klijent B { get; set; }
}
我们将使用.Zip将您的两个列表合并为一个组合列表。假设我们从这些列表开始
public static List<PoliceOsiguranja> listA = new List<PoliceOsiguranja>
{
new PoliceOsiguranja{ OIB = "PoliceOsiguranja1"},
new PoliceOsiguranja{ OIB = "PoliceOsiguranja2"},
new PoliceOsiguranja{ OIB = "PoliceOsiguranja3"},
};
public static List<Klijent> listB = new List<Klijent>
{
new Klijent { OIB = "klijent1"},
new Klijent { OIB = "klijent2"},
new Klijent { OIB = "klijent3"}
};
如果您需要对它们进行排序,比如通过OIB,您也可以通过更改为
IEnumerable<Combination> sortedCombinedList = listA.OrderBy(a => a.OIB).Zip(listB.OrderBy(b => b.OIB), (a, b) => new Combination { A = a, B = b });
但这将取决于您的用例 你能用拉链展示一下你的尝试吗?另外,您可以使用常规for循环并使用索引…错误是什么?您是否考虑过在Klijent和Policiosiguranja类中使用重写ToString?另外,这些类有什么共同点?大量错误试图使用Zip。@Jawad类中有OIBcommon@cortex请参阅下面我的文章,了解在遍历策略列表时查找客户机信息的信息。
foreach(Combination item in combinedList)
{
Console.WriteLine($"PoliceOsiguranja OIB = {item.A.OIB}, Klijent OIB = {item.B.OIB}");
}
IEnumerable<Combination> sortedCombinedList = listA.OrderBy(a => a.OIB).Zip(listB.OrderBy(b => b.OIB), (a, b) => new Combination { A = a, B = b });