C# 具有子查询、分组依据和

C# 具有子查询、分组依据和,c#,linq,group-by,subquery,having,C#,Linq,Group By,Subquery,Having,嗯 我没有花太多时间研究LINQ,我正在尝试用C编写一个查询,用一个子查询GROUPBY和having替换select语句。以下是原始查询: SELECT * FROM "Users" u1 WHERE u1.Name IN ( SELECT u2.Name From "Users" u2 WHERE Deleted IS NULL Group By u2.Name Having Count(UserName) > 1) ORDER BY

我没有花太多时间研究LINQ,我正在尝试用C编写一个查询,用一个子查询GROUPBY和having替换select语句。以下是原始查询:

SELECT * FROM "Users" u1
WHERE u1.Name IN (
    SELECT u2.Name
    From "Users" u2
    WHERE Deleted IS NULL
    Group By u2.Name
    Having Count(UserName) > 1)     
ORDER BY "Name"
我可以这样编写子查询:

            var query = 
                from u2 in db.Users
                group u2 by u2.Name into u2g
                where u2g.Count() > 1
                select u2g.Key;
但我正在努力将其作为子查询,并获得具有重复名称的用户的完整列表

任何帮助都将不胜感激

谢谢


dbl

组本身包含名称重复的用户-您选择了错误的内容

var dupeUsers = from user in users
                group user by user.Name into dupeNames
                where dupeNames.Count() > 1
                from userDupe in dupeNames
                orderby userDupe.Name
                select userDupe;
或者,在方法语法中

var dupeUsers = users.GroupBy(user => user.Name)
                     .Where(dupeNames => dupeNames.Count() > 1)
                     .SelectMany(user => user)
                     .OrderBy(user => user.Name);

组本身包含名称重复的用户-您选择了错误的内容

var dupeUsers = from user in users
                group user by user.Name into dupeNames
                where dupeNames.Count() > 1
                from userDupe in dupeNames
                orderby userDupe.Name
                select userDupe;
或者,在方法语法中

var dupeUsers = users.GroupBy(user => user.Name)
                     .Where(dupeNames => dupeNames.Count() > 1)
                     .SelectMany(user => user)
                     .OrderBy(user => user.Name);

组本身包含名称重复的用户-您选择了错误的内容

var dupeUsers = from user in users
                group user by user.Name into dupeNames
                where dupeNames.Count() > 1
                from userDupe in dupeNames
                orderby userDupe.Name
                select userDupe;
或者,在方法语法中

var dupeUsers = users.GroupBy(user => user.Name)
                     .Where(dupeNames => dupeNames.Count() > 1)
                     .SelectMany(user => user)
                     .OrderBy(user => user.Name);

组本身包含名称重复的用户-您选择了错误的内容

var dupeUsers = from user in users
                group user by user.Name into dupeNames
                where dupeNames.Count() > 1
                from userDupe in dupeNames
                orderby userDupe.Name
                select userDupe;
或者,在方法语法中

var dupeUsers = users.GroupBy(user => user.Name)
                     .Where(dupeNames => dupeNames.Count() > 1)
                     .SelectMany(user => user)
                     .OrderBy(user => user.Name);

我知道我所做的还不完整,只是从我的SQL查询中的子查询开始,然后进行计算。正如我所说的,林克做得不多,只是还没有弄明白如何那样思考。谢谢你的帮助。你对学习LINQ的书籍、网站或教程有什么好的建议吗?没什么好主意的,几乎任何一本像样的C语言书都会包含LINQ的例子@JonSkeet的C语言很好。我确实发现,至少对我来说,使用方法语法比使用查询语法更有用,但这可能只是个人偏好。另外需要注意的是,LINQPad是一个非常宝贵的工具,它可以在编写LINQ时不必经常求助于F5测试。我知道我所做的还不完整,只是从我的SQL查询中的子查询开始,然后进行计算。正如我所说的,林克做得不多,只是还没有弄明白如何那样思考。谢谢你的帮助。你对学习LINQ的书籍、网站或教程有什么好的建议吗?没什么好主意的,几乎任何一本像样的C语言书都会包含LINQ的例子@JonSkeet的C语言很好。我确实发现,至少对我来说,使用方法语法比使用查询语法更有用,但这可能只是个人偏好。另外需要注意的是,LINQPad是一个非常宝贵的工具,它可以在编写LINQ时不必经常求助于F5测试。我知道我所做的还不完整,只是从我的SQL查询中的子查询开始,然后进行计算。正如我所说的,林克做得不多,只是还没有弄明白如何那样思考。谢谢你的帮助。你对学习LINQ的书籍、网站或教程有什么好的建议吗?没什么好主意的,几乎任何一本像样的C语言书都会包含LINQ的例子@JonSkeet的C语言很好。我确实发现,至少对我来说,使用方法语法比使用查询语法更有用,但这可能只是个人偏好。另外需要注意的是,LINQPad是一个非常宝贵的工具,它可以在编写LINQ时不必经常求助于F5测试。我知道我所做的还不完整,只是从我的SQL查询中的子查询开始,然后进行计算。正如我所说的,林克做得不多,只是还没有弄明白如何那样思考。谢谢你的帮助。你对学习LINQ的书籍、网站或教程有什么好的建议吗?没什么好主意的,几乎任何一本像样的C语言书都会包含LINQ的例子@JonSkeet的C语言很好。我确实发现,至少对我来说,使用方法语法比使用查询语法更有用,但这可能只是个人偏好。另外需要注意的是,LINQPad是一个非常宝贵的工具,可以在不经常使用F5测试的情况下编写LINQ。