如何找出一个用户下多个账户下的交易记录?

boyyao 2020-06-20 01:21:30
假设数据模型如下:
public class user
{
public Int64 Id { get; set; }
public virtual List<UserBalance> UserBalance { get; set; } = new List<UserBalance>;
}

public class UserBalance
{
public Int64 Id { get; set; }
public string CardNO { get; set; }
public virtual List<UserBalanceRecord> UserBalanceRecord{ get; set; } = new List<UserBalanceRecord>;
}

public class UserBalanceRecord
{
public Int64 Id { get; set; }
public string RecordNote { get; set; }
}

而我要完成类似如下的结果
List<UserBalanceRecord> _UBRs = new List<UserBalanceRecord>;
List<UserBalance> _UBs = User.UserBalance;
foreach (UserBalance _UB in _UBs )
{
_UBRs.AddRange(_UB.UserBalanceRecord.ToList());
}

当然如上方法能得到所有数据。但是第一不方便分页。不方便根据各种规则来排序。比如根据不同卡号,或者结合记录日期排序并且分页。。 (或者说实现比较繁琐) 如何一次选出相应的数据。并且适合排序,分页?
...全文
5459 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2020-06-22
  • 打赏
  • 举报
回复
sp说的没错,不要一下子全部加载到缓存。 所以我在上面演示的是 Expression<Func> ,而不是直接 Func。 但是上面我因为操作的是内存数据, 所以正确的稍加修改,应该是如下(Compile()不需要调用)
public virtual IQueryable<T> FindList(Expression<Func<T, bool>> whereLamdba)
        {
            var _list = dbEF.Set<T>().AsNoTracking().Where<T>(whereLamdba);
            return _list;
        }
正怒月神 版主 2020-06-22
  • 打赏
  • 举报
回复
用户表 关联 账户表,再关联账单。 至于分页,你可以通过 var q=user.UserBalance.selectMany(x=>x.UserBalanceRecord).take(10).toList(); 至于不同条件传递。你参照下面的测试代码
qq_39080073 2020-06-22
  • 打赏
  • 举报
回复
需要写Linq表达式,看一下group,join写法即可。 淘宝小型监控摄像头推广
  • 打赏
  • 举报
回复
需求千差万别,例如涉及到分页,那么发往服务器的 sql 语句命令就必须仅仅查询指定页的数据,而不是所有数据取到应用程序内存来分页。这是一个业余爱好者和专业程序员的分水岭。所以,选择自己熟悉的开发工具和框架,不要在一个东西上“吊死”。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧