Lambda语法从List中删除行

jus*_*eve 0 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++;
}
Run Code Online (Sandbox Code Playgroud)

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

Dan*_*mov 5

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

如果userStatsList<T>地方T是你的行类型,您可以使用RemoveAll方法,其实去除符合给定条件的所有项目:

userStats.RemoveAll (r => r.OrderRow.RegistrationType == "Want Removed");
Run Code Online (Sandbox Code Playgroud)

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

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

userStats.RemoveAll (r =>
    r.OrderRow.RegistrationType == RegitrationType.ShouldBeRemoved);
Run Code Online (Sandbox Code Playgroud)