首页 > 解决方案 > c#中比较bool和string

问题描述

我有一个搜索方法,我想搜索表中的布尔值。IsFallBack 是布尔型,在表中显示为真或假。

 if (!string.IsNullOrEmpty(searchIsFallBack))
            {
                tableData = (IOrderedQueryable<TableData>)tableData.Where(m => m.IsFallBack.ToString() == searchIsFallBack);
            }

当我尝试搜索程序时抛出异常:System.InvalidOperationException: '无法翻译 LINQ 表达式。

在此处输入图像描述

searchValue 是用户在搜索框中输入的值 如何比较布尔值和搜索值?

标签: c#asp.net-mvcasp.net-coredatatables

解决方案


如果我没记错的话,问题是 EF 不能翻译ToString()。一种解决方案是将字符串转换为 bool(这也会提高性能,因为您将搜索本机 DB 类型,而不是对每一行执行转换):

if (!string.IsNullOrEmpty(searchIsFallBack))
{
    tableData = (IOrderedQueryable<TableData>)tableData.Where(m => 
       m.IsFallBack == (searchIsFallBack == "true"));
}

推荐阅读