我正在使用此代码:
query = String.IsNullOrEmpty(options.PhraseNum) ?
query :
query.Where(w => w.PhraseNum == Convert.ToInt32(options.PhraseNum));
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:
LINQ to Entities无法识别方法'Int32 ToInt32(System.String)'方法,并且此方法无法转换为存储表达式.
有没有办法可以在LINQ中执行此操作,如果不能,我如何在此之外进行转换并且如果字符串不为null,则转换不会导致异常?
只有query在可以将字符串解析为a 时才进行修改int,如果它不为null或为空,则进行隐式检查:
if (int.TryParse(options.PhraseNum, out var phraseNum))
{
query = query.Where(w => w.PhraseNum == phraseNum);
}
Run Code Online (Sandbox Code Playgroud)
在C#7之前,语法是
int phraseNum;
if (int.TryParse(options.PhraseNum, out phraseNum))
etc.
Run Code Online (Sandbox Code Playgroud)