2

在这里遇到了奇怪的情况。尝试在某个位置(纬度/经度)的特定范围内从 sql 数据库中提取汽车,然后返回一个 IQueryable 以在结果集上执行附加逻辑。

public IQueryable<Car> QueryAllCarsByDistance(float latitude, float longitude, int distance)
{
    var cars = from car in QueryAllCars()
               join i in sqlContext.QueryContactsByDistance(latitude, longitude, distance)
               on car.ContactId equals i.Id
               orderby i.Distance
               select car;

    return cars;
}

QueryContactByDistance 是 SQL 数据库中的一个函数,QueryAllCars 只返回数据库中的所有汽车。

我现在的问题是:如何将距离(i.Distance)附加到汽车?我不想选择新车{距离 = i.Distance, Id = car.Id, ... }。但是如何将这个附加值附加到汽车对象上呢?

4

2 回答 2

3

不幸的是,没有办法做到这一点。对于大多数正常的编码目的,C# 和 VB.Net 发出的类型定义是不可变的。不能在运行时添加或删除字段和属性。

您所能做的就是创建一个包装 Car 类型并提供附加属性的新类型。或者创建一个具有所有所需属性的 AnonymousType。

于 2009-03-28T15:49:39.083 回答
0

解决此问题的一种方法是您可以为此设置一个部分类(如果您还没有)向其添加一个名为 DistanceToReferencePoint 的新属性,然后在查询中将该属性设置为距离,然后它不会保存在数据库中但是会给你访问它。

于 2009-03-28T15:57:10.657 回答