Lambda语法从List中删除行

时间:2011-02-05 14:22:53

标签: c# asp.net lambda

假设:

string removeRows = "";
int i = 0;
foreach (var row in userStats)
{
    if (row.OrderRow.RegistrationType == "Want Removed")
    {
        removeRows = removeRows + i.ToString() + ",";
    }
    i++;
}

执行删除的Lambda语法是什么?

1 个答案:

答案 0 :(得分:5)

据我了解,您的代码收集要删除的行的索引,并形成一个逗号分隔的字符串。它实际上并没有删除这些项目,所以我不知道你为什么要这样做。

如果userStatsList<T>,其中T是您的行类型,则可以使用RemoveAll方法实际删除与给定条件匹配的所有项目:

userStats.RemoveAll (r => r.OrderRow.RegistrationType == "Want Removed");

我认为您的代码滥用字符串,您都使用它们来收集索引和注册类型。我想知道RegistrationType是否可以是枚举:

enum RegitrationType {
    ShouldBeRemoved,
    // add other types here
}

userStats.RemoveAll (r =>
    r.OrderRow.RegistrationType == RegitrationType.ShouldBeRemoved);