我有两个名为Transactions和CreditorDetails的对象。我希望能够从我的transations对象中获取检索说CFirstName。我不想从CreditorDetails中检索它。例如,我想能够说
foreach ( Transactions item in info.transaction)
{
Console.WriteLine("My Name" + item.creditors.Select(m =>m.CFirstName));//Just an example
}
上面的代码没有给我想要的结果。它正在返回system.linq.Enumerable + whereSelectListIterator ...........我认为我知道为什么但我需要能够从Transaction对象中获取CFirstName。
class Transactions
{
public List<CreditorsDetails> creditors { get; set; }
//Contains some other things which i didn't bother inlude since they are irrelevant
}
class CreditorsDetails
{
public string CFirstName { get; set; }
public string CAddress { get; set; }
public string CCountry { get; set; }
}
答案 0 :(得分:0)
Select
会为您提供一个strings
的可枚举,您需要对其进行迭代才能访问该信息:
foreach (Transactions item in info.transaction)
{
foreach (var cfName in item.creditors.Select(m => m.CFirstName))
{
Console.WriteLine("My Name" + cfName);
}
}
如果您只想要列表中的第一项,您还可以使用FirstOrDefault
foreach (Transactions item in info.transaction)
{
Console.WriteLine("My Name" + item.creditors.Select(m => m.CFirstName).FirstOrDefault());
}
答案 1 :(得分:0)
您可以使用SelectMany
从子列表中检索项目:
var result = info.transaction.SelectMany(x => x.creditors.Select(y => y.CFirstName));
内部Select
检索交易的债权人的名字列表。通过使用SelectMany
,您可以在一个列表中连接所有债权人的所有名字列表。
如果您只想返回不同的值,可以添加对Distinct
的调用:
var result = info.transaction.SelectMany(x => x.creditors.Select(y => y.CFirstName))
.Distinct();