第三个foreach
语句告诉我它无法将System.Collections.Generic.IEnumerable<string>
转换为String
。显示ID CTAF,显示nomClient但不显示numCompte。我该如何解决这个问题?
以下是代码:
public static void generateCTAF(string pathXml, string outputPDF)
{
List<FichierCTAF> fc = new List<FichierCTAF>();
fc = getXmlFCtaf(pathXml);
foreach (FichierCTAF f in fc)
{
Console.WriteLine("ID CTAF : {0}", f.IdFichierCtaf);
foreach(string nomClient in f.Clients.Select(y => y.NomClient))
{
Console.WriteLine(" Nom Client : {0}", nomClient);
foreach (string idCompte in f.Clients.Select(y => y.ComptesClient.Select(z => z.NumCompte)))
Console.WriteLine(" Num Compte : {0}\n", idCompte);
}
}
}
答案 0 :(得分:2)
public static void generateCTAF(string pathXml, string outputPDF)
{
// do not initialize fc variable with empty list
List<FichierCTAF> fc = getXmlFCtaf(pathXml);
foreach (FichierCTAF f in fc)
{
Console.WriteLine("ID CTAF : {0}", f.IdFichierCtaf);
foreach(var client in f.Clients) // select client here
{
// display Nom of current client
Console.WriteLine(" Nom Client : {0}", client.NomClient);
// enumerate comptes clients of current client
foreach (var comptesClient in client.ComptesClient))
Console.WriteLine(" Num Compte : {0}\n", comptesClient.NumCompte);
}
}
}
注意:您有错误,因为f.Clients.Select(y => y.ComptesClient.Select(z => z.NumCompte))
会返回字符串序列的序列,即IEnumerable<IEnumerable<string>>
。因此,当您尝试枚举此查询的结果时,您将获得IEnumerable<string>
类型的项目,而不是简单的string
。
您的密码中的另一个问题是您已选择f
的所有ComptesClient。但是您应该只加载与当前客户端相关的数据。