在Linq where子句中将int转换为字符串

k80*_*0sg 1 .net c# asp.net

我在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;

    }
Run Code Online (Sandbox Code Playgroud)

asm*_*sma 6

在EF中,int没有重载,因此您需要转换为double或decimal.你必须使用SqlFunctions.StringConvert

像这样:

        p.ProductID != null &&  SqlFunctions.StringConvert((double)p.ProductID).Contains(s)
Run Code Online (Sandbox Code Playgroud)