【问题标题】:How to use .Contains with Int DataType如何使用 .Contains 和 Int DataType
【发布时间】:2018-05-02 22:46:53
【问题描述】:

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

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

错误信息

严重性代码描述项目文件行错误 CS1061 'int' 确实 不包含“包含”的定义,也没有扩展方法 可以找到接受“int”类型的第一个参数的“包含” (您是否缺少 using 指令或程序集 参考?) 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();

【问题讨论】:

    标签: asp.net-mvc linq


    【解决方案1】:

    如果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();
    

    【讨论】:

      猜你喜欢
      • 2012-02-27
      • 2013-04-27
      • 1970-01-01
      • 2018-05-11
      • 2013-08-29
      • 1970-01-01
      • 2011-08-07
      • 1970-01-01
      • 2010-09-16
      相关资源
      最近更新 更多