相关疑难解决方法(0)

按多列分组

如何在LINQ中执行GroupBy多列

SQL中与此类似的东西:

SELECT * FROM <TableName> GROUP BY <Column1>,<Column2>
Run Code Online (Sandbox Code Playgroud)

如何将其转换为LINQ:

QuantityBreakdown
(
    MaterialID int,
    ProductID int,
    Quantity float
)

INSERT INTO @QuantityBreakdown (MaterialID, ProductID, Quantity)
SELECT MaterialID, ProductID, SUM(Quantity)
FROM @Transactions
GROUP BY MaterialID, ProductID
Run Code Online (Sandbox Code Playgroud)

.net c# linq group-by aggregate

919
推荐指数
8
解决办法
53万
查看次数

使用LINQ按多个属性进行分组并求和

我有一个项目集合,这里是:

AgencyID VendorID StateID Amount Fee
1        1        1       20.00  5.00
1        1        1       10.00  2.00
1        1        1       30.00  8.00    
2        2        1       20.00  5.00
2        2        1       5.00   5.00
1        1        2       20.00  5.00
2        2        2       20.00  5.00
2        2        2       40.00  9.00
1        2        2       35.00  6.00
1        2        2       12.00  3.00
Run Code Online (Sandbox Code Playgroud)

我希望根据AgencyID,VendorID和StateID对这些项目进行分组,并根据金额和费用(金额+费用)计算总计

所以使用上面的数据,我想得到这些结果:

AgencyID VendorID StateID Total
1        1        1       75.00    
2        2        1       35.00
1        1        2       25.00
2        2        2       74.00
1        2 …
Run Code Online (Sandbox Code Playgroud)

c# linq asp.net asp.net-mvc

18
推荐指数
2
解决办法
10万
查看次数

C# LINQ 按如下所示格式的对象列表进行分组

我有一个这种格式的数据列表 -

User    Role        Code
John    admin       101
John    admin       101
John    admin       100
Smith   superadmin  150
Smith   superadmin  120
Smith   superadmin  130
Smith   superadmin  140
Smith   superadmin  160
John    review      180
John    review      190
John    review      200
Run Code Online (Sandbox Code Playgroud)

我想根据这样的普通用户折叠它 -

 User    Role        Code
 John    admin       100,101
 Smith   superadmin  120,130,140,150,160     
 John    review      180,190,200
Run Code Online (Sandbox Code Playgroud)

我试过这个 -

result = userRoles.GroupBy(l => l.User).Select(u => new UserRole()
{ 
    Code = string.Join(", ", userRoles.Where(d => d.User ==  u.Key)
                                      .Select(d => d.Code)
                                      .ToArray()),
    User = u.Key,
}).ToList(); …
Run Code Online (Sandbox Code Playgroud)

c# linq group-by

4
推荐指数
1
解决办法
107
查看次数

使用LINQ从List中选择"custom distinct"项

我有一个通用的Policy对象列表.

该列表包含以下数据

id  policyNumber   policySequence  otherData
1   101            1               aaaa
2   101            2               bbbb
3   101            3               cccc
4   102            1               dddd
5   103            1               eeee
6   103            2               ffff
Run Code Online (Sandbox Code Playgroud)

我想为每个policyNumber选择包含最高policySequence的一行,以便我最终得到以下结果:

id  policyNumber   policySequence  created
3   101            3               cccc
4   102            1               dddd
6   103            2               ffff
Run Code Online (Sandbox Code Playgroud)

我在下面使用foreach有一个解决方案,但是想知道在LINQ中是否有更简单,更清晰的方法来执行此操作?

class Program
    {
        static void Main(string[] args)
        {
            List<Policy> policyList = new List<Policy>
                                          {
                                              new Policy {id = 1, policyNumber = 101, policySequence = 1, otherData = "aaaa"},
                                              new Policy {id = …
Run Code Online (Sandbox Code Playgroud)

c# linq

3
推荐指数
1
解决办法
2377
查看次数

C#Linq在多个列上联接2个表,并使用GROUP BY进行计数

我需要在五个列上加入两个实体,并且需要在SELECT中的每一列上加上GROUP BY,并在每个GROUP BY上获得一个COUNT。尽管这对SQL来说对我来说是小菜一碟,但我却对我为LINQ找到的每个示例都感到困惑。

我发现了以下两个问题(在多个列[重复]上的C#Linq分组依据在多个列上分组),但我仍然对如何执行此操作感到困惑。这是我的SQL语句:

SELECT  o.org_hq_name,
        o.org_command_name,
        o.org_region_name,
        o.org_installation_name,
        o.org_site_name,
        o.org_subsite_name,
        o.org_hq_id,
        o.org_command_id,
        o.org_region_id,
        o.org_installation_id,
        o.org_site_id,
        count(org_site_id) AS count

FROM    organization o, asset a

WHERE      o.org_hq_id = hq_org_id
AND        o.org_command_id = a.command_org_id
AND        o.org_region_id = a.region_org_id
AND        o.org_installation_id = a.installation_org_id
AND        o.org_site_id = a.site_org_id

GROUP BY o.org_hq_name,
        o.org_command_name,
        o.org_region_name,
        o.org_installation_name,
        o.org_site_name,
        o.org_subsite_name,
        o.org_hq_id,
        o.org_command_id,
        o.org_region_id,
        o.org_installation_id,
        o.org_site_id
Run Code Online (Sandbox Code Playgroud)

我在下面有一个加入:

var join1 =  from m in context.asset
             join o in context.organization
             on new {hqID = a.hq_org_id, commandID = …
Run Code Online (Sandbox Code Playgroud)

linq join group-by aggregate count

2
推荐指数
1
解决办法
5934
查看次数

由学校董事会和学校组成教师名单

我有查询返回教师名单,我需要由学校董事会和学校分组.

实际上显示数据如下:

School Board Name 1
School Name 1
Teacher Name 1

School Board Name 1
School Name 1
Teacher Name 2

School Board Name 1
School Name 2
Teacher Name 3

School Board Name 1
School Name 2
Teacher Name 4
Run Code Online (Sandbox Code Playgroud)

我需要展示的内容:

School Board Name 1
School Name 1
Teacher Name 1
Teacher Name 2

School Board Name 1
School Name 2
Teacher Name 3
Teacher Name 4
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用Linq或Lambda来做这个,我不知道这是不是最好的方法.

谢谢.

c# linq asp.net lambda list

1
推荐指数
1
解决办法
99
查看次数

LINQ过滤器基于两个属性的元素

我有一系列唯一键的列表

  var uniqueKeys = new List<string>   {"01", "04", "09", "26", "27"};
Run Code Online (Sandbox Code Playgroud)

我试图根据这些唯一键过滤另一个列表.

列表中的数据可以这样看:

To  From    
01  05
01  02
09  04
01  09
01  45
04  06
27  12
Run Code Online (Sandbox Code Playgroud)

我想以"To"和"From"属性值位于uniqueKeys中的方式从此列表中选择数据

期望的结果应该是:

To  From
09  04
01  09
Run Code Online (Sandbox Code Playgroud)

我通过互联网浏览过很多帖子,我无法用简单的LINQ格式编写逻辑.

如果有人遇到这个问题,请帮助我.

c# linq

0
推荐指数
1
解决办法
2238
查看次数

标签 统计

linq ×7

c# ×6

group-by ×3

aggregate ×2

asp.net ×2

.net ×1

asp.net-mvc ×1

count ×1

join ×1

lambda ×1

list ×1