当列是数字但是在WHERE中有一个字符串时,如何使用LINQ查询数据库?

Ala*_*an2 0 c# linq

我正在使用此代码:

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,则转换不会导致异常?

Ger*_*old 7

只有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)