Skip to main content

联接运算

联接运算包括Join,GroupJoin方法,得到的结果与Linq内一致,这里我们先引入一个小型的失血模型:

/// <summary>
/// 小型的Bean的失血模型
/// </summary>
public class SmallBeanLikeModel
{
/// <summary>
/// 布尔值类型
/// </summary>
public bool Bool { get; set; }

/// <summary>
/// decimal类型数字
/// </summary>
public double DecimalNumber { get; set; }


/// <summary>
/// 转换为字符串表示形式
/// </summary>
/// <returns></returns>
public override string ToString()
{
return
$"{DecimalNumber-{DecimalNumber},Bool-\"{Bool}\"]}";
}
}

那么,对ObjectSet使用join后,会得到一个关联连接后的集合:

//两个集合
var list = context.Beans.Where(p => p.Bool).ToList();
var joinResult = context.Beans.Join(list, p => p.Bool, p => p.Bool,
(p, l) => new SmallBeanLikeModel
{Bool = p.Bool, DecimalNumber = p.DecimalNumber}).ToList();

这里的结果是一个100个SmallBeanLikeModel对象的集合,其中每个对象都是按照第二个和第三格选择键进行联接的。

//两个集合
var list = context.Beans.Where(p => p.Bool).ToList();
var groupJResult = context.Beans.GroupJoin(list, p => p.Bool, p => p.Bool,
(p, l) => new SmallBeanLikeModel
{Bool = p.Bool, DecimalNumber = p.DecimalNumber}).ToList();

这里则得到的是分组连接后,按照最后一个参数投影出的SmallBeanLikeModel集合。