У меня был метод, который выглядит следующим образом:
Код: Выделить всё
private static IEnumerable Yield(this IEnumerable models, int numberResults) => numberResults > 0 ? models.Take(numberResults) : models;
Теперь мне нужно составить список некоторых Пользователей, но я использую ту же самую функцию, описанную выше.
Мой метод для этого выглядит следующим образом:
Код: Выделить всё
public async Task ListByQueryAsync(string query, int yield)
{
// Put our query in lowercase
var loweredQuery = query.ToLower();
// Get our users and search
var users = base.Users.Where(m => m.UserName.ToLower().Contains(loweredQuery) || m.FirstName.ToLower().Contains(loweredQuery) || m.LastName.ToLower().Contains(loweredQuery)); //.Yield(yield);
// Return our users as a list
return await users.Select(m => UserFactory.Create(m)).ToListAsync();
}
Сначала я просто скопировал метод выше и написал следующее:
Код: Выделить всё
private static IQuerable Yield(this IQuerable models, int numberResults) => numberResults > 0 ? models.Take(numberResults) : models;
Код: Выделить всё
public static class LinqExtensions
{
public static IEnumerable Yield(this IEnumerable models, int numberResults) => models.YieldEnumerable(numberResults);
public static IQueryable Yield(this IQueryable models, int numberResults) => models.YieldEnumerable(numberResults);
///
/// Lists database entities by a number of results or lists them all
///
/// The generic entity to list
///
The query to yield
/// The number of results to yield
///
private static IEnumerable YieldEnumerable(this IEnumerable models, int numberResults) => numberResults > 0 ? models.Take(numberResults) : models;
}
Невозможно неявно преобразовать тип «System.Collections.Generic.IEnumerable» в «System.Linq.IQuerable».
Я мог бы привести IQueryable как список или что-то в этом роде, но это означало бы, что мой метод Yield фактически выполнил бы SQL, а я не хочу, чтобы он это делал.
Кто-нибудь знает, как обойти эту проблему?
Подробнее здесь: https://stackoverflow.com/questions/433 ... enumerable
Мобильная версия