如何使用.Contains与Int DataType

时间:2018-05-02 22:46:54

标签: asp.net-mvc linq

以下代码是搜索功能代码的一部分,该代码从URL获取查询字符串并搜索数据库。

除了BatchID之外,一切都很有效。这会引发以下错误消息。 BatchID是数据库中的DataType Int。由于这个原因,它导致了错误。我尝试选择(string),但没有运气

错误消息

  

严重级代码描述项目文件行错误CS1061'int'确实如此   不包含'Contains'的定义,也没有扩展方法   可以找到'包含'接受'int'类型的第一个参数   (你错过了使用指令或程序集吗?   参考?)CardDistro E:\ wwwroot \ CardDistro \ CardDistro   \ Controllers \ CardsController.cs 32

QueriedTransactionList = db.Transactions
                           .Where(x => x.Card.InCome.InComePayerName.Contains(QueryString) || 
                                       x.Card.InCome.InComePayerEmail.Contains(QueryString) ||
                                       x.Card.InCome.InComePayerTIN.Contains(QueryString) ||
                                       x.BatchID.Contains( (string) QueryString) //Error over here || 
                                       x.Card.Port.PortName.Contains(QueryString)
                                  )
                           .OrderByDescending(x => x.TTransactionID)
                           .GroupBy(x => x.BatchID)
                           .Select(x => x.FirstOrDefault())
                           .ToList();

1 个答案:

答案 0 :(得分:2)

如果BatchID属性为int类型,则无法使用Contains,因为它适用于数组。您可以使用==运算符直接检查该值。

由于您使用相同的string参数(QueryString)来获取id值,因此应使用TryParse方法将字符串安全地解析为int变量值(如果它是int值的有效字符串表示)并使用它。如果BatchID值始终大于0,则可以将局部变量初始化为0,如果查询字符串具有有效数值,则解析它并更新局部变量并在LINQ中使用它表达

int id = 0;
if (Int32.TryParse(QueryString, out id))
{
}
var results = db.Transactions
                 .Where(x => x.Card.InCome.InComePayerName.Contains(QueryString) || 
                             x.Card.InCome.InComePayerEmail.Contains(QueryString) ||
                             x.Card.InCome.InComePayerTIN.Contains(QueryString) ||
                             x.Card.Port.PortName.Contains(QueryString) ||
                             x.BatchID == id   
                       )
                       .OrderByDescending(x => x.TTransactionID)
                       .GroupBy(x => x.BatchID)
                       .Select(x => x.FirstOrDefault())
                       .ToList();