首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将SQL查询转换为Linq2db

将SQL查询转换为Linq2db
EN

Stack Overflow用户
提问于 2022-07-11 06:25:21
回答 1查看 114关注 0票数 0

有些人帮助我将SQL查询转换为linq2db联接查询。下面是我的问题。

代码语言:javascript
复制
var query = from a in _accountRepository.Table
                        join b in _documentRepository.Table on a.ID equals b.AccountID
                        join c in _documentTypeRepository.Table on b.DocumentTypeID equals c.ID
                        where a.CompanyID == companyID && b.CompanyID == companyID
                        && c.CompanyID == companyID 
                        && a.IsActive && !a.IsDeleted && c.IsInvoice
                        && b.IsActive && !b.IsDeleted
                        && b.Date.Date >= fromDate.Date && b.Date.Date <=
                            toDate.Date
                        && (b.AccountID == accountID || accountID == null)
                        && (costcenterID.Contains(b.CostCenterID) || costcenterID == null)
                        && a.AccountTypeID == (int)DefaultAccountTypes.Customer
                        group b by new { a.DisplayName, a.ID } into g
                        select new SalesByCustomerModel
                        {
                            AccountID = g.Key.ID,
                            DisplayName = g.Key.DisplayName,
                            InvoiceCount = g.Count(),
                            Sales = g.Sum(x => (x.SubTotal - x.Discount)),
                            SalesWithTax = g.Sum(x => x.Total),
                            Tax = g.Sum(x => x.Tax)
                        };

我得加上这个。我如何才能与linq2db取得成功。

代码语言:javascript
复制
INNER JOIN (            SELECT  ROW_NUMBER() OVER(PARTITION by DocumentID ORDER BY DocumentID) AS SrNo,
                    DocumentID
                FROM DocumentDetail 
                WHERE (DocumentItemID = @itemID OR @itemID IS NULL) 
                    AND CompanyID = @companyID      ) D ON D.DocumentID = B.ID AND SrNo = 1
EN

回答 1

Stack Overflow用户

发布于 2022-07-11 13:06:48

Linq2db支持窗口函数,我们可以编写详细信息子查询并添加join

代码语言:javascript
复制
var details = 
    from d in _documentDetailRepository.Table
    where (d.DocumentItemID == itemID || itemID == null)
       && d.CompanyID == companyID
    select new 
    {
        d.DocumentID,
        SrNo = Sql.Ext.RowNumber().Over()
            .PartitionBy(d.DocumentID)
            .OrderBy(d.DocumentID)
            .ToValue()
    };

// Then your query can be extended
var query = 
    from a in _accountRepository.Table
    join b in _documentRepository.Table on a.ID equals b.AccountID
    join d in details on new { DocumentID = b.Id, SrNo = 1 } equals new { d.DocumentID, d.SrNo }
    ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72934470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档