You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按特定顺序遍历集合?优先遍历List<Contact>中Selected为true的元素

优先遍历Selected为true的Contact对象

这事儿好办!你只需要在遍历前给集合做个简单排序,把Selected = true的Contact优先排到前面就行,用LINQ就能轻松实现。

直接上代码示例:

// 假设你的contacts是List<Contact>类型
var orderedContacts = contacts.OrderByDescending(c => c.Selected).ToList();

foreach (var contact in orderedContacts)
{
    // 现在第一个遍历到的就是Selected为true的对象啦
    Console.WriteLine($"当前遍历的联系人:{contact.Name}");
}

如果你不想额外创建新的List,也可以直接在foreach循环里用LINQ查询,省一步:

foreach (var contact in contacts.OrderByDescending(c => c.Selected))
{
    // 效果完全一样,优先遍历选中的联系人
}

为啥这么做可行?

在C#里,布尔值的排序规则是true等价于1,false等价于0。用OrderByDescending(降序排序)把Selected作为排序键,自然就会把所有Selected = true的对象排在最前面,未选中的跟在后面。而且LINQ的排序是稳定的——如果有多个选中的Contact,它们之间的相对顺序会和原集合里保持一致。

要是你需要更精细的排序逻辑,比如选中的在前,同时选中的联系人按名称字母顺序排列,还可以叠加ThenBy:

var orderedContacts = contacts
    .OrderByDescending(c => c.Selected)
    .ThenBy(c => c.Name)
    .ToList();

这样既保证了选中项的优先级,又能让选中的联系人按名称有序排列。

内容的提问来源于stack exchange,提问作者54566

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:35:32