Я вполне уверен, что этот вопрос уже задавался несколько раз, и я прошу прощения за то, что спросил его еще раз, но я провел небольшое исследование и, к сожалению, я не нашел своего удовольствия в Интернете ...
У меня есть IQueryable, как это:
triggers = triggers.Where(t => GetIdFromName(t.Name) == filter.Id.ToString());
Функция GetIdFromName получает часть имени для получения идентификатора:
public string GetIdProfiloFromName(string name)
{
return name.Substring(name.IndexOf(NameFirstSeparator)+1,name.IndexOf(NameSecondSeparator)-name.IndexOf(NameFirstSeparator)-1);
}
Я знаю, что это не хорошо, но этолучшее, что я мог сделать до сих пор.Мой вопрос заключается в том, что использование Linq для SQL не допускается с помощью этих двух операторов.Приложение выдает ошибку, тогда как это нормально:
triggers = triggers.Where(t => t.Name.Substring(t.Name.IndexOf(NameFirstSeparator) + 1, t.Name.IndexOf(NameSecondSeparator) - t.Name.IndexOf(NameFirstSeparator) - 1) == filter.Id.ToString());
Я подозреваю, что функция GetIdFromName должна давать что-то отличное от строки, но мне действительно интересно, что и как ...
Спасибо за ваше просветление,
Йоанн
[ПРАВИТЬ] Обновление до того, что я понял до сих пор:
Я не могу делать то, что хотел, потому что для этого я хотел бынужно сделать что-то в этом роде:
static Expression<Func<Trigger,string, bool>> IsId = (a,b) => a.name.Substring(a.name.IndexOf(NameFirstSeparator) + 1, a.name.IndexOf(NameSecondSeparator) - a.name.IndexOf(NameFirstSeparator) - 1)==b;
Но это не попадет в
triggers = triggers.Where(func<Trigger,bool>);
И я смог бы это сделать, но мне нужно было бы получить все результаты отмоя база данных для выполнения моего теста в памяти.
Большое спасибо всем, вы сделали это стало действительно ясным для меня !!