将IF转换为LINQ

0 .net c# linq

有人可以帮我转换成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;
Run Code Online (Sandbox Code Playgroud)

SLa*_*aks 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%";
}
Run Code Online (Sandbox Code Playgroud)