obase社区Obase开发者QQ群:962698871
obase

欢迎查阅
OBASE帮助文档

类似于Linq,Obase内也可以对ObjectSet使用GroupBy方法来对对象分组,Obase支持对对象直接分组为IGroupingBy,以及分组后投影成其他对象和匿名对象,这里使用之前快速入门中使用过的班级和学生间的关系作为示例:

var result2 = context.Students.GroupBy(s => s.ClassId, s => s.StudentId).ToList();

得到的结果是一个IGroupingBy的集合,其中包含一个键位ClassId的IGroupingBy对象。 我们增加一个简单的分组类:

/// <summary>
///     简单Stu类 符合Json命名标准
/// </summary>
public class SimpleGroup
{
    /// <summary>
    ///     ID
    /// </summary>
    public long Id { get; set; }

    /// <summary>
    ///     个数
    /// </summary>
    public long Count { get; set; }
}
//按照属性分组 并投影成某个类
var result3 = context.Students
    .GroupBy(s => s.ClassId, s => s.StudentId,
        (cid, sids) => new SimpleGroup {Id = cid, Count = sids.Max()}).ToList();

将分组后成员最大值作为最大的个数,这里得到的就是一个SimpleGroup的集合,其中ID是ClassId,Cout是是分组后的最大值。

 //按照属性分组 并投影成List<匿名类>
var result1 = context.Students
    .GroupBy(s => s.ClassId, s => s.StudentId,
        (cid, sids) => new {Id = cid, count = sids.Count()}).ToList();

当然,投影成匿名对象也是可以的得到的结果就是一个匿名类列表。

没有找到您需要的文档?

您还可以通过人工服务在线咨询,服务时间为每天上午9点至下午6点。

If you can't find required answer, get in touch with us online. We provide service from 9:00 to 18:00.

让编程成为一件快乐的事
现在开始