我在MVC项目中编写了一个搜索函数,它与数据库匹配。
数据库的结构如下:
Name-string(数据的名称)
SubName-字符串(数据的子名称)
SomeData-int(实际数据)
因此,如果我有大约100个帖子,其中有一个名称和一个特定的子名称,它们的数据值不同。然后又有100个帖子使用相同的名称但使用不同的子名称。
现在,当我搜索数据库时,我使用这个linq代码;
var names = db.Graphs
.Where(r => r.Name.Contains(term))
.Take(5).Distinct()
.Select(r=> new {label = r.Name});
我原以为梅比会得到5个不同的答案,但它没有。。。
我得到了前100个帖子中的5个,我想过滤一下,这样我就只使用带有次名称的uniqe名称。所以在上面的例子中,我会恢复2个入口。
感觉我已经尝试了所有的东西,但都失败了,所以任何输入都会被通知。
var names = db.Graphs
.Where(r => r.Name.Contains(term))
.GroupBy(s=>s.Name).Take(5)
.Select(r => new { label = r.FirstOrDefault().Name });
您应该在Take()之前应用Distinct()。我希望这会有所帮助。