Dapper之QueryAsync
public static Task<IEnumerable> QueryAsync<TFirst, TSecond, TReturn>()
应用场景:获取带有子集集合的数据
- Parent——带有子节点的Model
public class Parent
{
public Parent()
{
Child= new List<Child>();
}
public string Id { get; set; }
public string Name { get; set; }
public List<Child> Child{ get; set; }
}
Child——子节点model
public class Child
{
public string Id { get; set; }
public string Name { get; set; }
}
var lookup = new Dictionary<string, Parent>();
var sql = " ";
await db.QueryAsync<Parent, Child, Parent>(
sql,
(b, s) =>
{
//获取父节点
Parenttmp;
if (!lookup.TryGetValue(b.Id, out tmp))
{
tmp = b;
lookup.Add(b.Id, tmp);
}
//获取子节点集合
if (s != null && (!tmp.Child.Any(x => x.Id == s.Id)))
{
tmp.Child.Add(s);
}
return b;
},
new { ParentId = id });
return lookup.Values.ToList();