是否可以使用lambda(C#)
编写以下内容private static void GetRecordList(List<CustomerInfo> lstCustinfo)
{
for (int i = 1; i <= 5; i++)
{
if (i % 2 == 0)
lstCustinfo.Add(new CustomerInfo { CountryCode = "USA", CustomerAddress = "US Address" + i.ToString(), CustomerName = "US Customer Name" + i.ToString(), ForeignAmount = i * 50 });
else
lstCustinfo.Add(new CustomerInfo { CountryCode = "UK", CustomerAddress = "UK Address" + i.ToString(), CustomerName = "UK Customer Name" + i.ToString(), ForeignAmount = i * 80 });
}
}
答案 0 :(得分:7)
List<CustomerInfo> lstCustinfo =
Enumerable.Range(1, 5).Select(i => (i % 2 == 0)
? new CustomerInfo { CountryCode = "USA", CustomerAddress = "US Address" + i.ToString(), CustomerName = "US Customer Name" + i.ToString(), ForeignAmount = i * 50 }
: new CustomerInfo { CountryCode = "UK", CustomerAddress = "UK Address" + i.ToString(), CustomerName = "UK Customer Name" + i.ToString(), ForeignAmount = i * 80 })
.ToList();
答案 1 :(得分:1)
您必须先定义选择,然后将其添加到传入列表:
var range = Enumerable.Range(1, 5);
var customers = from i in range
select (i % 2 == 0) ?
new CustomerInfo
{
CountryCode = "USA",
CustomerAddress = "US Address" + i,
CustomerName = "US Customer Name" + i,
ForeignAmount = i * 50
}
:
new CustomerInfo
{
CountryCode = "UK",
CustomerAddress = "UK Address" + i,
CustomerName = "UK Customer Name" + i,
ForeignAmount = i * 80
};
lstCustinfo.AddRange(customers);
或许甚至更明确:
var range = Enumerable.Range(1, 5);
var usCustomers = from i in range
where i % 2 == 0
select new CustomerInfo
{
CountryCode = "USA",
CustomerAddress = "US Address" + i,
CustomerName = "US Customer Name" + i,
ForeignAmount = i * 50
};
var ukCustomers = from i in range
where i % 2 != 0
select new CustomerInfo
{
CountryCode = "UK",
CustomerAddress = "UK Address" + i,
CustomerName = "UK Customer Name" + i,
ForeignAmount = i * 80
};
lstCustinfo.AddRange(usCustomers.Union(ukCustomers));