gpt4 book ai didi

.net - Entity Framework 查询 - 按特定顺序获取对象

转载 作者:行者123 更新时间:2023-12-04 07:58:44 26 4
gpt4 key购买 nike

我有一个列表,用于指定数据库中多个对象的 ID。我想从一个表中获取一组对象,这些对象具有这些 ID 并将它们保持在确切的顺序中,并且我希望它作为对数据库的一个查询(而不是“N”个查询)执行。

例如,我有一个 ID 列表 {5, 3, 6, 9},我想取回带有这些 ID 的 Customer 对象列表,并将它们按顺序排列 { Customer(5, 'Bob'), Customer( 3, 'JimBo'), Customer(6, 'Joe'), Customer(9, 'Jack') }.

数据量足够小,我不介意在数据库查询后重新排序。我可以在大约 15 行干净的代码中完成所有这些(包括手动重新排序),但我觉得应该有一个针对 EF 的单行或两行 LINQ 查询应该可以轻松完成。

最佳答案

我相信您需要在获得结果后执行订购。我可能会像这样处理它。

var efQuery = /* your query here */.AsEnumerable(); // force evaluation 
var orderedResult = from id in idList // { 5, 3, 6, 9 }
join item in efQuery
on id equals item.Id
select item;

ID 列表与查询结果的内存连接将保留 ID 的顺序。

编辑:来自评论

my spidey senses tingle at using Join to rely on maintaining the sorted order. I wonder if that's a stated property of Join in documentation (if not it could change in some future version of .NET, such as for performance reasons).



我指向你 http://msdn.microsoft.com/en-us/library/bb534675.aspx , 备注部分

Join preserves the order of the elements of outer, and for each of these elements, the order of the matching elements of inner.

关于.net - Entity Framework 查询 - 按特定顺序获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5884745/

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