gpt4 book ai didi

c# - 将项目移动到数组中的第一个

转载 作者:太空狗 更新时间:2023-10-30 00:35:26 28 4
gpt4 key购买 nike

我有一个对象数组

MyObjects[] mos = GetMyObjectsArray();

现在我想将一些 id 为 1085 的元素移到第一个,所以我在 LINQ 中编写了这样的代码,有没有更优雅的方法来做到这一点?

mos.Where(c => c.ID == 1085).Take(1).Concat(mos.Where(c => c.ID != 1085)).ToArray();

注意,我想保存其他项目的位置,所以与第一个项目交换不是解决方案

最佳答案

这不是 LINQ,但这是我处理数组的方式。

public static bool MoveToFront<T>(this T[] mos, Predicate<T> match)
{
if (mos.Length == 0)
{
return false;
}
var idx = Array.FindIndex(mos, match);
if (idx == -1)
{
return false;
}
var tmp = mos[idx];
Array.Copy(mos, 0, mos, 1, idx);
mos[0] = tmp;
return true;
}

用法:

MyObject[] mos = GetArray();
mos.MoveToFront(c => c.ID == 1085);

关于c# - 将项目移动到数组中的第一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4721900/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com