【问题标题】:How can I transalte SQL Query to LINQ如何将 SQL 查询转换为 LINQ
【发布时间】:2020-10-26 22:22:40
【问题描述】:

我试图将 SQL 查询转换为 Linq 语句:

 SELECT f.BarcodeNumber,m.Name, f.Model, SUM(f.Quantity) as FoundedAssetsQty, ISNULL(a.Quantity,0) as AssetQty
  FROM [InventoryDB].[dbo].[FoundedAssets] f
  join [InventoryDB].[dbo].[PhisicalStockCheckSheets] p on p.ID = f.PhisicalStockCheckSheetId
  join [InventoryDB].[dbo].[Inventories] i on i.ID = p.InventoryId
  left join [InventoryDB].[dbo].[Assets] a on a.BarcodeNumber = f.BarcodeNumber
  join [InventoryDB].[dbo].[Manufacturers] m on m.ID = f.ManufacturerId
  where p.InventoryId = 10
  group by f.BarcodeNumber, a.Quantity, f.Model, m.Name

我不知道该怎么做。我尝试了很多方法,但我失败了。谁能帮帮我?

【问题讨论】:

  • 查看these tools 将 SQL 转换为 Linq。希望对您有所帮助。
  • 你能分享你试过的东西吗?

标签: c# sql sql-server linq


【解决方案1】:

我尝试使用Linqer,但是当我配置连接时它失败了,所以我自己编写了linq指令。最后我找到了答案。我没有提到实体之间的关系,但在这里并不重要。

var summary = _context.FoundedAssets.Include(f => f.Manufacturer).
                Include(f => f.Asset).
                Include(f => f.PhisicalStockCheckSheet).ThenInclude(f => f.Inventory).
                Where(f => f.PhisicalStockCheckSheet.Inventory.ID == id).
                Select(x => new InventorySummaryModel()
                {
                    BarcodeNumber = x.BarcodeNumber.Value,
                    ManufacturerName = x.Manufacturer.Name,
                    Model = x.Model,
                    AssetsQuantity = x.Asset.Quantity,
                    FoundedAssetQuantity = x.Quantity
                }).ToList();

            var groupedSummary = summary.GroupBy(x => x.BarcodeNumber).Select(x => new InventorySummaryModel()
            {
                BarcodeNumber = x.First().BarcodeNumber,
                ManufacturerName = x.First().ManufacturerName,
                Model = x.First().Model,
                FoundedAssetQuantity = x.Sum(a => a.FoundedAssetQuantity),
                AssetsQuantity = x.First().AssetsQuantity
            }).ToList();

也许存在任何更简单的方法,但这个方法可以正常工作。

【讨论】:

    猜你喜欢
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多