我在linq查询中有一个'where'子句,我必须将int转换为字符串,我尝试在SO中读取类似的遇到但我仍然难以在我的方法中应用解决方案。这是抛出'System.Web.HttpUnhandledException'错误的行,感谢任何帮助:
|| (p.ProductID!= null&& p.ProductID.ToString()。Contains(s)):
public void search(string s)
{
CommerceEntities db = new CommerceEntities();
var products = from p in db.Products
where (p.ModelName != null && p.ModelName.Contains(s))
|| (p.ProductID != null && p.ProductID.ToString().Contains(s))
|| (p.ModelNumber != null && p.ModelNumber.Contains(s))
|| (p.Description != null && p.Description.Contains(s))
select new
{
// Display the items
ProductID = p.ProductID,
ProductImage = p.ProductImage,
UnitCost = p.UnitCost
};
ListView_Products.DataSourceID = null;
ListView_Products.DataSource = products;
}
答案 0 :(得分:6)
在EF中,int没有重载,所以你需要强制转换为double或小数。您必须使用SqlFunctions.StringConvert
像这样:
p.ProductID != null && SqlFunctions.StringConvert((double)p.ProductID).Contains(s)
答案 1 :(得分:0)
它抛出了异常,因为在第一行的末尾你关闭了where方法。你错过了(将这些行组合在一起。
where ((p.ModelName != null && p.ModelName.Contains(s)) ||
(p.ProductID != null && p.ProductID.ToString().Contains(s)) ||
(p.ModelNumber != null && p.ModelNumber.Contains(s)) ||
(p.Description != null && p.Description.Contains(s)))
答案 2 :(得分:0)
如果您使用Linq to Entities,则无法在查询表达式中使用C#方法。 如果它是Linq to Sql,它将起作用。
答案 3 :(得分:0)
初始化整数变量转换字符串s而不是使用
p.ProductID ==(intval))
意味着您的代码将是这样的
public void search(string s)
{
CommerceEntities db = new CommerceEntities();
int val = Convert.ToInt32(s);
IQueryable<Product> product = db.Products ;
var products = from p in db.Products
where (p.ModelName != null && p.ModelName.Contains(s))
|| (p.ProductID != null && p.ProductID == val)
|| (p.ModelNumber != null && p.ModelNumber.Contains(s))
|| (p.Description != null && p.Description.Contains(s))
select new
{
// Display the items
ProductID = p.ProductID,
ProductImage = p.ProductImage,
UnitCost = p.UnitCost
};
ListView_Products.DataSourceID = null;
ListView_Products.DataSource = products;
}
答案 4 :(得分:0)
仍然在DB中评估查询的下降解决方法如下:
Convert.ToString(p.ProductID).Contains(s)
答案 5 :(得分:-1)
您无法在Entity Framework Linq查询中使用.ToString()方法。