Как передать тип IQueryable в качестве запроса в linqC#

Место общения программистов C#
Ответить
Anonymous
 Как передать тип IQueryable в качестве запроса в linq

Сообщение Anonymous »

Я хочу передать часть запроса в приведенном ниже Linq в качестве параметра. Чтобы я мог решить, какой запрос мне может потребоваться передать в качестве параметра.
например, на основе значения состояния, переданного из запроса API, оно может быть либо новым, Progress, Done или просто нулевым. Если значение равно нулю, добавьте условие nowhere.

Код: Выделить всё

public async Task GetData(int LitEditJobId)
{
var litEditJob = await context.LitEditJob
.Include(x => x.LitEdit)
.FirstAsync(x => x.JobId == LitEditJobId);

var LitEditTasksQuery = context.Entry(LitEditJob)
.Collection(b => b.LitEditJobTasks)
.Query();

await LitEditTasksQuery
.Where(x => x.State == "new")
.OrderBy(x => x.Id)
.Skip(10)
.Take(10)
.LoadAsync();

return litEditJob;
}
Я попробовал несколько вещей, например

Код: Выделить всё

IQueryable query = new List().AsQueryable();
//I'll add some switch case condition
query = query.Where(t => t.State == LitEditStatus.Progress).OrderBy(x => x.Id).Skip(skip).Take(size);
передача запроса в качестве параметра метода. Но, похоже, ничего не работает. Есть ли способ сделать это??

Код: Выделить всё

public async Task GetData(int LitEditJobId, IQueryable query)
{
query = context.BulkEditJobTask.AsQueryable().Concat(query);
var litEditJob = await context.LitEditJob
.Include(x => x.LitEdit)
.FirstAsync(x => x.JobId == LitEditJobId);

var LitEditTasksQuery = context.Entry(LitEditJob)
.Collection(b => b.LitEditJobTasks)
.Query();
if (query is not null)
{
LitEditTasksQuery = query;
}
await LitEditTasksQuery.LoadAsync(cancellationToken: cancellationToken);

return litEditJob;
}
Я не уверен, как это сделать правильно. Есть ли способ передать запрос в качестве параметра, а затем выполнить Linq.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -to-a-linq
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»