【问题标题】:Convert SQL Query To LINQ?将 SQL 查询转换为 LINQ?
【发布时间】:2018-04-04 12:28:59
【问题描述】:

我知道基本的 LINQ,但我已经有几年没有使用过它了。所以我忘记了LINQ。我无法将此 SQL 查询转换为 LINQ。

   SELECT  
   [CompanyName]
  ,[ContactPerson]
  ,[Address]
  ,[Email]
  ,[InActive]
  ,(Select SUM(isnull(CreditAmount,0) - isnull(DebitAmount,0))  FROM [dbo].[SupplierTransaction] where SupplierId = s.SupplierId)  as Balance FROM [dbo].[Supplier] S

我试过了,但它不起作用

from s in Suppliers
select new
{
s.SupplierId,
s.CompanyName,
s.ContactPerson,
s.Address,
s.Email,
s.InActive,
s.BranchId,
s.CreateDate,
s.CreatedBy,
s.UpdateDate,
s.UpdatedBy,
s.PhoneNumber,
Balance = (from v in SupplierTransactions
                          where v.SupplierId ==  s.SupplierId
                          select (v.Sum(v.CreditAmount-v.DebitAmount)))
}

【问题讨论】:

  • 也许你应该展示你迄今为止尝试过的和没有奏效的。提供您得到的错误、异常或意外结果。这样人们就可以帮助您,而不是为您编写代码。
  • 抱歉现在更新我的问题
  • 请详细说明它是如何不工作的
  • 请扩展not working
  • Balance = (from v in SupplierTransactions where v.SupplierId == s.SupplierId select ((v.CreditAmount).Sum()-(v.CreditAmount).Sum())) } 我试过了这。但显示此错误“'十进制'不包含'Sum'的定义,并且最佳扩展方法重载'Queryable.Sum(IQueryable)'需要'IQueryable'类型的接收器”

标签: c# sql sql-server linq


【解决方案1】:

我没有测试它,但它应该看起来像这样:

var query = (from s in Suppliers 
             select new 
             {
                 SupplierId = s.SupplierId,
                 CompanyName = s.CompanyName,
                 ContactPerson = s.ContactPerson,
                 Address = s.Address,
                 Email = s.Email,
                 InActive = s.InActive,
                 BranchId = s.BranchId,
                 CreateDate = s.CreateDate,
                 CreatedBy = s.CreatedBy,
                 UpdateDate = s.UpdateDate,
                 UpdateBy = s.UpdatedBy,
                 PhoneNumber = s.PhoneNumber,
                 Balance = SupplierTransactions
                          .Where(st => st.SupplierId == s.SupplierId)
                          .Select(st => (st.CreditAmount - st.DebitAmount))
                          .Sum()
             });

【讨论】:

  • 糟糕。请注意,我在 where 条件下犯了一个错误。您应该用 s.SupplierID 替换一个 st.SupplierId ...我编辑了我的答案!
猜你喜欢
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
  • 2012-02-17
  • 2017-02-23
  • 2020-07-19
  • 2016-03-08
相关资源
最近更新 更多