在这里陷入了一种奇怪的境地。尝试在一个位置(lat / long)的特定范围内从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)附加到汽车上?我不想做一个新的Car {Distance = i.Distance,Id = car.Id,...}。但是如何将这个附加值附加到汽车对象?
答案 0 :(得分:3)
不幸的是没有办法做到这一点。对于大多数正常编码目的,C#和VB.Net发出的类型定义是不可变的。无法在运行时添加或删除字段和属性。
您所能做的就是创建一个新的类型,它包装Car类型并提供附加属性。或者创建一个具有所需属性的AnonymousType。
答案 1 :(得分:0)
这方面的一个方法是你可以为此设置一个局部类(如果你还没有)向它添加一个名为DistanceToReferencePoint的新属性,然后在查询中将该属性设置为距离,那么它就不会保存在数据库,但会让你访问它。