1

我在我的 MVC 项目中编写了一个搜索功能,它匹配一个数据库。

数据库有这样的结构:

名称 - 字符串(数据的名称)

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});

我认为那个maby会得到5个不同的答案,但它并不...

我得到前 100 个帖子中的 5 个,我想过滤,以便我只使用带有子名的唯一名称。因此,在上面的示例中,我将恢复 2 个条目。

感觉就像我已经尝试了一切并且失败了,所以任何输入都会被应用。

4

1 回答 1

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()。我希望这会有所帮助。

于 2013-02-12T13:12:42.203 回答