基于多行的多个标签显示新闻

时间:2014-02-22 11:26:03

标签: c# asp.net entity-framework

我正在使用c#,Entity Framework 5& S开发asp.net 4.0中的新闻网站。 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);

如果其他新闻有单个标签“例如太阳”,它可以正常工作 但如果它有“太阳,星系”或多个标签,它就不起作用

1 个答案:

答案 0 :(得分:0)

我不完全确定,但我认为问题是:

where tags.Contains(c.Tags)

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

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

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

linq where list contains any in list