代码之家  ›  专栏  ›  技术社区  ›  Jronny

如何使用实体框架从查询结果中删除列重复项?

  •  0
  • Jronny  · 技术社区  · 16 年前

    在我的数据库表中

    Key    | Value
    a      | 1
    a      | 2
    b      | 11
    c      | 1
    d      | 2
    b      | 3
    

    但我只需要得到键不是前几行重复项的项。预期结果应为:

    Key    | Value
    a      | 1
    b      | 11
    c      | 1
    d      | 2
    

    我们如何使用实体框架获得所需的结果?

    注意:我们需要第一个值。非常感谢你。

    2 回复  |  直到 16 年前
        1
  •  2
  •   Craig Stuntz    16 年前
    var q = from e in Context.MyTable
            group e by e.Key into g
            select new 
            {
                Key = g.Key,
                Value = g.OrderBy(v => v.Value).FirstOrDefault()
            };
    
        2
  •  1
  •   Alex James    16 年前

    您应该考虑在数据库中编写一个视图并将您的实体映射到该视图。 或者在EDMX部分创建一个定义查询(也就是最后出现在ssdl文件中的位)。

    见 Tip 34 更多信息。

    从概念上讲,这两种方法都允许您编写排除“重复行”的视图。不同之处就在于这里的景色。

    如果你能控制数据库-我会把视图放到数据库里 如果没有,可以将视图放在中,然后映射到中。

    希望这有帮助

    亚历克斯