В моем приложении на C # у меня есть метод, который возвращает IQueryable, где MyClass является классом для кода Entity Framework в первую очередь. Похоже на это.
// Is a class for Entity Framework code-first
public class MyClass
{
public int Id {get; set;}
public int LuckyNumber {get; set;}
}
public IQueryable<MyClass> GetQuery()
{
var query = doSomethingToGetQuery();
return query;
}
Предположим, я хочу создать метод, который возвращает IQueryable, но я хочу, чтобы мой запрос применил какое-то преобразование к данным перед его возвратом.
Если бы у меня был метод, который возвращал IEnumerable, я мог бы написать что-то вроде этого:
public IEnumerable<MyClass> GetEnumerable()
{
var query = doSomethingToGetQuery();
return query.Select(x =>
{
var y = x;
y.LuckyNumber = 2 * x.LuckyNumber;
return y;
}
}
Таким образом, у меня был бы IEnumerable, который бы возвращал те же данные, что и исходная функция, но это удвоило бы LuckyNumber.
Предположим, я хочу сделать что-то подобное, но я хочу вернуть IQueryable, где результат будет таким же, как запрос исходного запроса, но в результате значение LuckyNumber удваивается или применяется какое-то другое преобразование.
Кроме того, я не хочу выполнять SQL-запрос, который возвращает весь набор данных, особенно если я получаю одну запись по идентификатору.
Могу ли я сделать это в C #?