首页 > 解决方案 > 此代码的等效 sql 查询是什么?

问题描述

这段代码给出的结果不准确,我需要更改它,但我不明白整个代码在做什么。

我阅读了有关 defaultifempty 及其实现的信息。我阅读了文档,但找不到问题的答案。

 var records = from entity in _db.InventoryDetails
                          from am in _db.AccountMeters
                            .Where(am => entity.SerialNumber == (am.SerialNumber ?? am.RemoteId.ToString())).DefaultIfEmpty()
                          from ac in _db.Accounts
                       .Where(ac => ac.AccountId == am.AccountId).DefaultIfEmpty()
                          from i in _db.Inventories
                            .Where(idd => idd.ProjectId == projectid)
                            .Where(idd => idd.InventoryId == entity.InventoryId)
                          from u in _db.Users
                            .Where(e => e.Id == (entity.InstallerId ?? entity.PrevInstaller)).DefaultIfEmpty()

它不会给出错误,只是查询给出了错误的结果。如果我能找到代码的 sql 等效项,那么我可以找出他正在尝试做什么,然后找出业务需求并重新编码。

标签: c#sqllinq

解决方案


ToString()您可以通过调用方法获取将由您的代码生成的 SQL 代码:

var records = from entity in _db.InventoryDetails
    // the other code is omitted for the brevity
var sqlCode = records.ToString(); // here your generated SQL code

推荐阅读