加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 获取序列中“next”元素的最简单方法?

发布时间:2020-12-16 00:01:55 所属栏目:百科 来源:网络整理
导读:我有一个ICollection SomeClass. public class SomeClass{ public string Text { get; set; } public bool IsPreferred { get; set; }} 那里的物品已经预订,所以“下一步”确实意味着什么. 在我的场景中,序列的内容如下所示: [0] – “a”,false [1] – “b
我有一个ICollection< SomeClass>.

public class SomeClass
{
   public string Text { get; set; }
   public bool IsPreferred { get; set; }
}

那里的物品已经预订,所以“下一步”确实意味着什么.

在我的场景中,序列的内容如下所示:

[0] – “a”,false

[1] – “b”,true

[2] – “c”,false

我想在IsPreferred == true之后得到“next”元素.所以在上面,我想得到元素2,我想清除其他IsPreferred值.

所以我想最终得到这个:

[0] – “a”,false

[2] – “c”,true

基本上将首选项目洗牌.

最好的方法是什么?我唯一能想到的是创建一个新数组,逐个添加它们,跟踪首选的索引,然后在上述索引1处获取元素.

有更好的想法吗?

解决方法

由于 ICollection<T>没有给你一个索引器,我会选择更直接的解决方案而不是依赖LINQ.

假设您希望(1)在满足条件时立即停止,并且(2)仅在下一个项目存在时更改该值,这可以通过以下方式实现:

bool isFound = false;
SomeClass targetItem = null;
foreach (var item in list)
{
    if (isFound)
    {
        item.IsPreferred = true;
        targetItem.IsPreferred = false;
        break;
    }
    if (item.IsPreferred)
    {
        targetItem = item;
        isFound = true;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读