有人可以帮我转换成LINQ吗?任何帮助/提示赞赏...
IList<DestinationSummary> list =
_invoiceReportDao.InvoiceDestinationSummary(filter);
IList<DestinationSummary> updatedList =
new List<DestinationSummary>();
foreach (DestinationSummary item in list)
{
if (item.ChargeCategoryDiscriminator == "INT")
item.ChargeCategoryDiscriminator = "00%";
if (item.ChargeCategoryDiscriminator == "UK")
item.ChargeCategoryDiscriminator = "07%";
updatedList.Add(item);
}
return updatedList;
答案 0 :(得分:5)
LINQ不应该用于修改对象。
你的代码原样很好。
但是,您可以通过从旧列表初始化新列表来使其快一点:
IList<DestinationSummary> list = _invoiceReportDao.InvoiceDestinationSummary(filter);
IList<DestinationSummary> updatedList = new List<DestinationSummary>(list);
foreach (DestinationSummary item in updatedList)
{
if (item.ChargeCategoryDiscriminator == "INT")
item.ChargeCategoryDiscriminator = "00%";
if (item.ChargeCategoryDiscriminator == "UK")
item.ChargeCategoryDiscriminator = "07%";
}
答案 1 :(得分:0)
list.Where(i => i.ChargeCategoryDiscriminator == "INT")
.ForEach(i => i.ChargeCategoryDiscriminator ="00%");
list.Where(i => i.ChargeCategoryDiscriminator == "UK")
.ForEach(i => i.ChargeCategoryDiscriminator ="07%");
此外,将这些项添加到updatedList是多余的。对list
进行了更改。
答案 2 :(得分:0)
创建新列表是多余的。您正在遍历列表,修改每个项目,然后将修改的项目添加到新列表。因此,新列表与旧列表相同。