我有一个集合(在 DbSet 中),我想按其属性(距离)的计算结果对其进行排序,并将其转换(重新使用距离)到不同的模型。每个条目应该只计算一次(作为一个 DbSet,它将在数据库本身中执行)。
class InputModel {
Vector3 position;
}
class OutputModel {
double distance;
}
var inputList = getInputList(); // returns IQueryable<InputModel>
var outputList = inputList
.Where( x => (){
var dist = calculateDistance( x.position );
// calculateDistance() boils down to a simple equation that could directly translated to an sql-query (when typed in statically by hand)
return dist < maxDistance;
})
.Select( x => () {
return new OutputModel {
distance = ???; // get the calculated distance somehow
})
.ToList();
我想到了两种可能的解决方案:
- 将数据库中的所有条目放入一个容器中,计算距离并在 foreach 循环中过滤出条目。
- 按距离过滤并在转换为 OutputModel 时重新计算距离。
是否可以一次完成此操作(首选是在数据库本身中进行计算)?
您可以执行 inputlist.where(....).select(x=>calculatedistance).select(dist=> new outputmodel)... 从我的手机评论所以无法输入完整的语句。但应该指出你正确的方向。基本上。拳头做的地方,然后选择距离。然后选择输出模型
我是一名优秀的程序员,十分优秀!