LINQ Collections.Generic.List.RemoveAll的参数无效

时间:2016-10-04 18:33:46

标签: c# .net linq

我有这个方法告诉我,我有一些无效的参数,我试图从我的RemoveAll对象中调用List<SelectListItem>。我只需要根据一个简单的条件从下拉列表中删除一些项目。

public JsonResult GetExportTables(CaseListDynExport objCaseListDynExport)
{
    List<SelectListItem> lstExportTablesList = new List<SelectListItem>();
    try
    {
        CaseListDynExportBLL objCaseListDynExportBLL = new CaseListDynExportBLL();

        DataTable dtExportTables = objCaseListDynExportBLL.GetExportTables(objCaseListDynExport);

        lstExportTablesList = DropDownHelper.GetSelectListItem("TableName", "TableExportCode", null, dtExportTables);

        if (objCaseListDynExport.someCondition)
            lstExportTablesList.RemoveAll(lstExportTablesList.Where(l => l.Text.IndexOf("Audit") >= 0));
    }
    catch (Exception ex)
    {
        LogUtility.ErrorException(ex);
    }

    return Json(lstExportTablesList, JsonRequestBehavior.AllowGet);
}

我必须遗漏一些非常明显的东西,但我无法发现我做错了什么。

我看过这些帖子:

但是,是的;无法发现我做错了什么......

1 个答案:

答案 0 :(得分:5)

应该是:

lstExportTablesList.RemoveAll(l => l.Text.IndexOf("Audit") >= 0);

因此,您将lambda方法直接传递给RemoveAll方法以检查条件。

具有相同功能的更简洁的方式是:

lstExportTablesList.RemoveAll(l => l.Text.Contains("Audit"));