Asp.net mvc 如何将.Contains与Int数据类型一起使用
下面的代码是搜索功能代码的一部分,它从URL获取查询字符串并搜索数据库 除了一件事Asp.net mvc 如何将.Contains与Int数据类型一起使用,asp.net-mvc,linq,Asp.net Mvc,Linq,下面的代码是搜索功能代码的一部分,它从URL获取查询字符串并搜索数据库 除了一件事BatchID之外,一切都很好。将抛出以下错误消息。BatchID是数据库中的数据类型Int。由于这个原因,它导致了一个错误。我试着用(string)来铸造,但是运气不好 错误消息 严重性代码说明项目文件行错误CS1061“int”不存在 不包含“Contains”的定义,也不包含扩展方法 “Contains”接受类型为“int”的第一个参数 (是否缺少using指令或程序集 参考?)CardDistro E:\w
BatchID
之外,一切都很好。将抛出以下错误消息。BatchID
是数据库中的数据类型Int
。由于这个原因,它导致了一个错误。我试着用(string)
来铸造,但是运气不好
错误消息
严重性代码说明项目文件行错误CS1061“int”不存在
不包含“Contains”的定义,也不包含扩展方法
“Contains”接受类型为“int”的第一个参数
(是否缺少using指令或程序集
参考?)CardDistro E:\wwwroot\CardDistro\CardDistro
\控制器\CardsController.cs 32
如果
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();
如果
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();