2014-02-22 139 views
0

我开发的新闻网站在asp.net 4.0与C#中,实体框架5 &的SQLServer 2008显示新闻

后阅读新闻我展示基于来自其他新闻

匹配标签的相关新闻
var article = (from c in ctx.Articles where c.ArticleID == "10" select c).SingleOrDefault(); 
var tags = new List<string>(); 
string[] words = article.Tags.Split(','); 
foreach (string word in words) 
{ 
    if (word != "") { tags.Add(word.Trim()); } 
} 

最新消息有以下标签: 太阳,月亮,星星

var relatedNews = (from c in ctx.Articles where tags.Contains(c.Tags) select c).Take(10); 

如果其他消息有一个标签“,如太阳“它工作正常 但是如果它有‘太阳星系’或多个标签,这是行不通的

回答

0

我不能完全肯定,但我认为这个问题是:

where tags.Contains(c.Tags) 

现在文章必须提供所有提供的标签(sun和galaxy),而不是一个或多个标签(sun或galaxy)。这真的是你想要的还是我误解你的问题/代码?它不应该是这样的:

where c.Any(x => tags.Contains(x)) 

这样的事情应该选择具有其中一个标签,或两个标签的项目。另见:

linq where list contains any in list