我在MVC项目中编写了一个搜索功能,它与数据库匹配。
数据库的结构如下:
名称 - 字符串(数据名称)
SubName - 字符串(数据的子名称)
SomeData - int(实际数据)
因此,如果我有100个帖子,其中包含名称和具有不同数据值的特定子名称。然后100个帖子使用相同的名称但不同的子名称。
现在,当我搜索数据库时,我使用这个linq-code;
var names = db.Graphs
.Where(r => r.Name.Contains(term))
.Take(5).Distinct()
.Select(r=> new {label = r.Name});
我认为那个maby会得到5个不同的答案,但它有点......
我得到前100个帖子中的五个,我想过滤以便我只使用带有子名的uniqe名称。所以在上面的例子中,我将复活2次。
感觉我已经尝试过所有事情并且失败了,所以任何输入都会得到满足。
答案 0 :(得分:0)
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()。我希望这会有所帮助。