【问题标题】:Linq query to get all pending LoansLinq 查询以获取所有待处理的贷款
【发布时间】:2013-07-20 07:20:58
【问题描述】:

我在 lightswitch LOANS(Id(default),..) 和 RELEASES(Id(default),Loan,..) 中有两个表。我想创建一个屏幕,其中所有待处理的贷款都显示在数据网格中。所以我创建了一个 wcf RIA 类库。我希望返回所有尚未发布的贷款。对此的 linq 查询是什么。 我从其他 SO 帖子中尝试过,但它给出了空引用异常。用户代码未处理空引用异常。对象引用未设置为对象实例

Loan to Release 具有 1 : 0/1(一贷到零或一贷)关系 贷款可以有零个或一个关系。释放必须有贷款。

 [Query(IsDefault = true)]
    public IQueryable<PendingLoans> GetPendingLoans()
    {
        var res = from l in this.context.Loans
                  join r in this.context.Releases
                  on l equals r.Loan
                  where r.Loan == null
                  select new PendingLoans { BillNo = l.BillNo };
        return res.AsQueryable<PendingLoans>();
    }

【问题讨论】:

  • 当您甚至不提供表格定义时,谁能回答这个问题。您需要列出所有列/关系。为什么release会有Id和ReleaseId?您是否在 Releases 上创建了关系?如果您设置了不需要加入的关系,Lightswitch 应该几乎可以处理这样的简单查询,而无需编写s what its 的手动查询代码。老实说,该查询没有什么意义,您要求返回 Loans 但随后规定只有 NULL Loan
  • @MarkHomer Homer 我已编辑添加关系信息如何建议在灯开关中执行此操作的简单方法。
  • 自从我使用 LightSwitch 以来已经有一段时间没有安装它了,但无论如何我不会为你这样做。我认为此时更好的方法是阅读数据库并设计表和关系。在这里毫无意义的复制和粘贴查询。

标签: c# linq left-join wcf-ria-services lightswitch-2012


【解决方案1】:

试试这个,这是 linq,但使用 lambdas 而不是查询语法

[Query(IsDefault = true)]
public IQueryable<PendingLoans> GetPendingLoans()
{
    var res = this.context.Loans.Where(l=>!l.Releases.Any()).Select(l=> new PendingLoans { BillNo = l.BillNo }).AsQueryable();
    return res;
}

如果你想使用查询语法,这实际上是一样的

[Query(IsDefault = true)]
public IQueryable<PendingLoans> GetPendingLoans()
{
    var res = from l in this.context.Loans
              where !l.Releases.Any()
              select new PendingLoans { BillNo = l.BillNo };
    return res.AsQueryable();

}

现在我要说的一件事是,因为您在说“AsQueryable”之前要转换为 PendingLoan,所以您已经枚举了您的数据集(从一种对象转换为另一种对象)。因此,这不会与您可能试图摆脱“AsQueryable”部分的后期绑定具有相同的好处(您已经对数据库执行过),因此您最好只返回一个 IEnumerable 并忘记 AsQueryable部分,因为您已经枚举过一次。

【讨论】:

  • 我刚试过,但得到错误(红色下划线)l=>!l.Releases.Any() 说委托'System Func' 不接受一个参数跨度>
  • 基本上它说不包含 ANY() 的定义
  • @Rakon_188 您使用的是实体框架还是 linq to sql 或其他东西?此外,如果您可以编辑您的问题以添加您的数据结构(您的表及其主键)
  • EF 我猜,请多多包涵,我是新手,我真的不知道。它是一个带有表格和屏幕的电灯开关应用程序。为了执行数据聚合,我附加了一个 wcf ria 类。这个特定的代码来自那个班级。
  • 非常感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-09
  • 2015-01-19
  • 1970-01-01
  • 1970-01-01
  • 2022-12-11
  • 1970-01-01
相关资源
最近更新 更多