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

LINQ&SQL查询帮助:一起对两列执行不同操作?

  •  3
  • VoodooChild  · 技术社区  · 14 年前

    如何执行a select where I get the distinct result based on the fromlinkid and tolinkid tolinkid>together?

    如果我有一个包含以下数据的 列表

    结果基于 FromLinkID ToLinkID 一起?

    如果我有 List 有了以下数据,我如何才能在Linq中得到我想要的东西?

    6 回复  |  直到 14 年前
        1
  •  2
  •   Quassnoi    14 年前
    SELECT  DISTINCT FromLinkId, ToLinkId
    FROM    mytable
    

    为每个选择一条记录 (FromLinkId, ToLinkId) (至少 id ),假设 SQL Server :

    SELECT  *
    FROM    (
            SELECT  *, ROW_NUMBER() OVER (PARTITION BY FromLinkId, ToLinkId ORDER BY id) AS rn
            FROM    mytable
            ) q
    WHERE   rn = 1
    
        2
  •  0
  •   Charles Bretana    14 年前

    试试这个:

    Select Distinct FromLinkId LinkId From MyTable 
    Union 
    Select Distinct ToLinkId LinkId From MyTable 
    
        3
  •  0
  •   Kai Chan    14 年前
    SELECT Name, FromLinkId, ToLinkId FROM MyTable GROUP BY FromLinkId, ToLinkId -- if there are more than one record with the same (FromLinkId, ToLinkId) pair, only one of them is displayed.
    
        4
  •  0
  •   user500798    14 年前

    你可以这样做:

    SELECT MAX(ID), MAX(Name), FromLinkID, ToLinkID FROM MyTable 
    GROUP BY FromLinkID, ToLinkID
    

    甚至:

    SELECT t.* FROM
    (SELECT MAX(ID) as MaxID, FromLinkID, ToLinkID FROM MyTable  
    GROUP BY FromLinkID, ToLinkID) d 
    LEFT JOIN MyTable t ON d.MaxID=t.ID
    
        5
  •  0
  •   Community CDub    8 年前

    LINQ解决方案:

    List<MyObj> distinctResults = allResults
      .GroupBy(p => new {p.FromLinkID, p.ToLinkID} )
      .Select(g => g.First())
      .ToList();
    

    希望它能帮助别人。

    Helpful related SO question.

        6
  •  0
  •   Dave    14 年前

    list distinctresults=所有结果 .select(p=>新建p.fromlinkid,p.tolinkid) 区别() 。