У меня возникла проблема с последних трех дней и не удалось найти решение для google и stackoverflow.Динамический Linq - Методы по типу 'Int32?' не доступны
У меня есть свойство nullable int в моей модели. Когда я пытаюсь применить любую функцию в этом столбце, используя предложение dynamic where, я столкнулся с ошибкой - «Методы по типу« Int32? » не доступны ».
Supposingly, моя модель структура -
public class MyTestModel
{
public int Id { get; set; }
public string Name { get; set; }
public int? ParentId { get; set; }
}
Теперь я хочу, чтобы поисковый запрос, который создается динамически от переднего конца. Например,
Where("Name.StartsWith(\"t\") and ParentId.ToString().StartsWith(\"1\") ");
Мое решение удовлетворяет всем другим типам, но типы с нулевым значением здесь не работают. Я также попытался проверить нуль, но не работает. (Прочтите это на каком-либо другом форуме):
Where("Name.StartsWith(\"t\") and (ParentId != null and ParentId.ToString().StartsWith(\"1\")) ");
Where("Name.StartsWith(\"t\") and (ParentId != null and ((int?)ParentId).ToString().StartsWith(\"1\")) ");
Я думал, что вы не можете использовать ToString, если это Linq для Entites, вы должны использовать SqlFunctions.StringConvert, но я не думаю, что вы можете назвать это в динамическом linq. Или у вас есть новые версии EF, добавленные в ToString? – Mant101
@ Mant101 Он не указал, использует ли он EF или Linq-to-Sql. Linq-to-Sql поддерживает '.ToString()' (только что отмечен) – xanatos
ParentId.Value.ToString() работал для меня. Благодарю. Можете ли вы объяснить логику этого? или любая справочная статья, в которой говорится об этом? –