在linq中使用字符串进行比较

时间:2015-04-15 16:25:44

标签: c# sql sql-server linq entity-framework

编辑 - 所以我试图查询的字符串中有一个/ n。我爱电脑。

我需要根据类别名称获取类别中的产品。如果我使用类别ID,它可以工作......

from r in db.products 
from pc in r.productcategories 
where pc.categories.categoryid == n  
select r

但这不是

from r in db.products 
from pc in r.productcategories 
where pc.categories.categoryname == n  
select r

我也试过包含......

from r in db.products 
from pc in r.productcategories 
where pc.categories.categoryname.Contains(n)  
select r

没有错误,但没有返回任何行,而在使用id时会返回行。

3 个答案:

答案 0 :(得分:1)

您需要在where子句中进行字符串比较,现在您的n可能具有id值,因此请确保您的n变量具有字符串值

string n = "categoryname"  

from r in db.products 
from pc in r.productcategories 
where pc.categories.categoryname == n  
select r

第二种可能的情况是您的产品类别将是值集合

答案 1 :(得分:1)

from r in db.products 
from pc in r.productcategories 
where pc.categories.categoryname.Contains(n)  || n.Contains(pc.categories.categoryname)
select r

尝试一下,可能n包含一些额外的字符,如空格或标签

答案 2 :(得分:0)

如果n是整数ID& CategoryName是字符串然后你正在比较错误的东西。