Передача func в качестве параметра в Linq сущностям и ошибка «Внутренний провайдер данных .NET Framework ошибка 1025»

У нас есть класс с именем Task:

public partial class Task : EntityObject
{
    public EntityCollection TaskUsers { get {...} set{...} } 
}

У него есть свойство навигации, называемое TaskUsers, которое содержит пользователей, прикрепленных к этому taks:

public partial class TaskUser : EntityObject
{
    public User User { get {...} set {  } }
}

Каждый объект TaskUser имеет объект User.

Нам даютIQueryable tasks, Мы хотим найти задачи, назначенные пользователю с ID = 1. Когда мы используем

tasks.Where(t => t.TaskUsers.Any(a => a.User.ID == 1))

все отлично работает Когда мы используем

Func function = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.Any(function));

мы получаем хороший'Internal .NET Framework Data Provider error 1025' ошибка. Зачем? Я хочу построить гораздо более сложные фильтры, используяExpression класс, но если я могут пройти простоFunc, Это может'это будет сделано. Что я должен делать?

РЕДАКТИРОВАТЬ

Может быть

Func function = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.Any(function));

Безразлично»не работает, но

Expression expression = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.AsQueryable().Any(expression));

работает! Это все, что мне было нужно.

 Shaul Behr13 дек. 2012 г., 14:52
На самом деле, попробовав использоватьExpression скорее, чемFuncкак ты, мой сделалне Работа. Есть еще идеи?
 Shaul Behr13 дек. 2012 г., 14:36
Хех, я только что отправил награду нааналогичный вопроспрежде чем найти свое решение здесь. Хотите пойти и получить награду?

Ответы на вопрос(1)

Решение Вопроса

то есть это может перевести это:

Expression<func<taskuser,bool>> 
</func<taskuser,bool>

но не это

Func<taskuser,bool>
</taskuser,bool>

Что касается того, как объединить выражения (в псевдокоде):

Expression<func<taskuser, bool="">> expression = a => a.User.ID == 1;
return tasks.Where(t => t.TaskUsers.Any(expression));
</func<taskuser,>

Есть, вероятно, некоторые гуру выражениякто может помочь с этим.

Я предлагаю последующий вопрос, сосредоточенный на этой конкретной проблеме

Alex

 Alex James11 нояб. 2009 г., 15:54
Круто, всегда удивляюсь.
 LukLed11 нояб. 2009 г., 12:55
Без помощи гуру: вернуть задачи. Где (t => t.TaskUsers.AsQueryable () Любое (выражение)).

Ваш ответ на вопрос