实体框架对具有条件 C# 的成员进行计数

本文关键字:成员 框架 有条件 实体 | 更新日期: 2023-09-27 18:34:07

我有一个名为LiquidatorRepresentative的表。该表包含表示的成员 ID。我不知道如何使用EntityFramework或LinQ计算LiquidatorRepresentative中有多少条目在C#中具有相同的RepresentMemberId

提前谢谢。

编辑:我已经制作了一个列表 InfoList,现在的问题是检查是否有 Type=15 和相同 RepresentMemberId 的条目。我无法使用存储过程,因为由于 linq 的原因,程序已经运行缓慢。

实体框架对具有条件 C# 的成员进行计数

基本上,您需要的是按表示的成员 ID 对数据进行分组,然后计算每个组中的项目。代码将类似于:

var groups = liquidatorRepresentative.GroupBy(lr => lr.RepresentedMemberId).Select(group => new { Id = group.Key, Count = group.Count() })
foreach (var group in groups)
{
    Console.WriteLine("{0} {1}", group.Id, group.Count);
}

如果要计算满足条件的实体数,则可以简单地计算:

var count = await (from x in set
                   where condition(x)
                   select x).CountAsync();

这将转换为数据库上的select count(1)...:它只会返回计数,而不是所有数据。

分组按扩展方法应该可以解决问题

   var groupCount = db.LiquidatorRepresentative.GroupBy(info => info.RepresentedMemberId)
                            .Select(group => new { 
                                 RepresentedMemberId = group.Key, 
                                 Count = group.Count() 
                            });

谢谢你们的帮助。我用我需要检查的内容做了一个列表,而不是 forEach,我在元素中带来了第一个条目。这段代码适用于我需要的,感谢您的帮助。

if(InfoList.Where(adx => adx.Id == element.Id && adx.Type == "15").Count() > 1
   || InfoList.Where(adx=adx.Id == element.Id && adx.Type == "16").Count() > 1)