我正在使用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);
如果其他新闻有单个标签“例如太阳”,它可以正常工作 但如果它有“太阳,星系”或多个标签,它就不起作用
答案 0 :(得分:0)
我不完全确定,但我认为问题是:
where tags.Contains(c.Tags)
现在文章必须包含所有提供的标签(太阳和星系),而不是一个或多个标签(太阳或星系)。这真的是你想要的还是我误解你的问题/代码?不应该是这样的:
where c.Any(x => tags.Contains(x))
这样的事情应该选择具有其中一个标签或两者的项目。另见: