Linq,过滤掉倍数

时间:2013-02-12 12:43:39

标签: c# linq

我在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次。

感觉我已经尝试过所有事情并且失败了,所以任何输入都会得到满足。

1 个答案:

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