gpt4 book ai didi

c# - Linq Where Contains ...保持默认顺序

转载 作者:太空狗 更新时间:2023-10-29 21:46:31 28 4
gpt4 key购买 nike

我有一个 ID 号集合,我希望为其返回一些对象,我通过使用一个 linq 语句和一个使用 contains 语句的 where 来做到这一点:

var recentCats = (from i in EntityCache.Default.GetAll<Categories>()
where WebProfile.Current.RecentlyCreatedCategories.Contains(i.Id)
&& BoundCategory.ParentItemClass.Id.Equals(i.ParentItemClass.Id)
select new CategoryInfo()
{
Category = i,
ClassId = i.ParentItemClass.Id,
ClassImage = NamedResourceManager.GetResourceBinary(i.ParentItemClass.NameResourceId)
});

这工作得很好,除了我想让返回的集合中的项目顺序与它们在进入的列表中的顺序相同。例如,如果我有一个 ID 列表:14、603、388 ,我希望返回的对象顺序相同,而不是缓存返回的顺序。 Entity Framework 中有什么方法可以做到这一点,或者有什么方法不需要我编写 foreach 循环吗?

谢谢

最佳答案

与大多数扩展一样,Where Linq 扩展保持列表的原始顺序。

Do LINQ's Enumerable Methods Maintain Relative Order of Elements?

只要您没有明确重新排序或使用自然会重新排序的运算符,就应该保持原始列表的顺序。显然,为 where 语句重新排序列表是不必要的开销。


上述信息不适用于此问题的原因在下面的评论中。我建议将 select 的输出更改为键/值对,其中键是列表中 Id 的索引,值是您的新对象,然后 orderBy 结果集上的键,然后选择值(value)。

关于c# - Linq Where Contains ...保持默认顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8669985/

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