用于从列表中删除行的 Lambda 语法

发布于 2024-10-16 07:00:05 字数 266 浏览 1 评论 0原文

假设:

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

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

Given:

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

what's the Lambda syntax to execute the removal?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

表情可笑 2024-10-23 07:00:05

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

如果 userStatsList,其中 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);

As I understand, you code collects the indexes of rows to be removed and forms a string with them comma-separated. It doesn't actually removes these items so I don't know why you're doing it.

If userStats is List<T> where T is your row type, you can use RemoveAll method that actually removes all items that match given condition:

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

I think your code abuses strings, you both use them for collecting indexes and for registration type. I wonder if RegistrationType could be an enumeration instead:

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

userStats.RemoveAll (r =>
    r.OrderRow.RegistrationType == RegitrationType.ShouldBeRemoved);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文