Linq to Sql: добавить дополнительные данные к результату - PullRequest
2 голосов
/ 28 марта 2009

Наткнулся здесь на странную ситуацию. Попытка извлечь автомобили из базы данных 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, ...}. Но как просто добавить это дополнительное значение к объекту автомобиля?

Ответы [ 2 ]

3 голосов
/ 28 марта 2009

К сожалению, нет способа сделать это. Для большинства обычных целей кодирования тип определения , испускаемый C # и VB.Net, является неизменным. Поля и свойства не могут быть добавлены или удалены из них во время выполнения.

Все, что вы можете сделать, - это создать новый тип, который обёртывает тип Car и предоставляет дополнительное свойство. Или создайте AnonymousType, который имеет все необходимые свойства.

0 голосов
/ 28 марта 2009

Одним из способов решения этой проблемы является то, что вы можете установить частичный класс для этого (если вы еще этого не сделали) добавить к нему новое свойство с именем DistanceToReferencePoint, а затем в запросе установить это свойство на расстояние, которое затем не будет сохранено в база данных, но даст вам доступ к ней.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...