【问题标题】:How to foreach over a collection in a specific order?如何按特定顺序遍历集合?
【发布时间】:2018-09-04 08:05:48
【问题描述】:

假设在名为 contactsList<Contact> 中,我想遍历所有 Contact 对象 - 从属性为 Selected 的对象开始。

这是Contact的结构:

public class Contact
{
    public string Name { get; set; }
    public bool Selected { get; set; }
}

现在在列表中我有三个联系人,其中一个具有属性Selected true,当我开始迭代时:

foreach(contact in contacts)

我希望迭代中的第一项是属性设置为 true 的联系人。我怎样才能做到这一点?谢谢。

【问题讨论】:

  • 总结各种答案中的 cmets:OP 希望遍历所有元素,但将 Selected 设置为 true 的元素排在 Selected 设置为 false 的元素之前。
  • @MatthewWatson - 这是你的解释,不是我的。 OP,我认为您应该提供几个示例输入和输出。
  • @JᴀʏMᴇᴇ 等待 OP 确认/拒绝。他真的需要 - 问题是模棱两可的,以至于目前无法回答(因此我对这个问题投了反对票,直到它得到解决)。但是,请注意,对于非跳过答案,OP 说“答案对我有好处,我不需要跳过”

标签: c#


【解决方案1】:

您可以使用 LINQ OrderByDescending 对列表 contacts 进行排序:

contacts = contacts.OrderByDescending(x => x.Selected).ToList(); 

【讨论】:

  • 因为这里没有跳过的概念。或者,正如对问题的另一种解释会引导您建议,过滤。
  • 答案对我有好处,我不需要跳过,我只需要从Selected为真的项目开始
  • 这个答案建议您更改从哪个项目开始,而不是starting at the item。有一种微妙之处。一个建议您按照原始顺序保留该系列,另一个建议您重新订购。你到底想要什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多