表:
物品
ID
关键字
标识
关键字
ItemKeyword
项目Id
KeywordId
的SequenceNumber
<小时/> 通过关键字搜索项目:
Keyword keyword = Keyword.FirstOrDefault(a => a.Keyword
.Equals(input, StringComparison.InvariantCultureIgnoreCase));
IEnumerable<Item> items = keyword.ItemKeyword.OrderBy(a => a.SequenceNumber)
.SelectMany(a => a.Item);
获取相关关键字:
IEnumerable<Keyword> relatedKeywords = items.ItemKeyword
.SelectMany(a => a.Keyword)
.Except(keyword);
IEnumerable<Keyword> orderedRelatedKeywords = relatedKeywords
.OrderByDescending(a => relatedKeywords
.Where(b => b
.Keyword.Equals(a.Keyword, StringComparison.InvariantCultureIgnoreCase))
.Count())
.Distinct();
我现在没有配备开发计算机,但我希望你能得到我的想法。 这里我真正的问题是按相关关键字的顺序排列它所使用的次数。有什么方法可以做到这一点吗?感谢。
答案 0 :(得分:1)
Hrm,你说LinqToEntities,暗示这些查询将在数据库中运行...如果查询是在数据库中运行的,那么字符串比较不是不区分大小写吗?
这是一个查询表单,它将分组,然后按组计数排序。
IQueryable<string> orderedKeywords =
from k in Keywords
group k.Keyword by k.Keyword into g
order by g.Count() descending
select g.Key;
// lambda syntax of above
IQueryable<string> orderedKeywords = Keywords
.GroupBy(k => k.Keyword)
.OrderByDescending(g => g.Count())
.Select(g => g.Key)