如何将sql union转换为linq
我有一个使用union的以下Transact SQL查询。 我需要一些关于如何在LINQ中看起来的指针,即一些例子会很好或者如果有人可以在linq中推荐一个关于UNIONS的好教程。
select top 10 Barcode, sum(ItemDiscountUnion.AmountTaken) from (SELECT d.Barcode,SUM(AmountTaken) AmountTaken FROM [Aggregation].[dbo].[DiscountPromotion] d GROUP BY d.Barcode UNION ALL SELECT i.Barcode,SUM(AmountTaken) AmountTaken FROM [Aggregation].[dbo].ItemSaleTransaction i group by i.Barcode) ItemDiscountUnion group by Barcode
请注意,原始SQL正在合并 2个选择NOT连接它们。 我需要知道如何合并结果,即删除重复项,并根据条形码对存在重复的行数值求和。
三个有用的Linq概念在集合上运行。 给定集合c
和集合e
:
Concat为您提供c
或e
所有内容:
(From c In db.Customers Select c.Phone).Concat( _ From c In db.Customers Select c.Fax).Concat( _ From e In db.Employees Select e.HomePhone) (From c In db.Customers _ Select Name = c.CompanyName, Phone = c.Phone).Concat(From e In db.Employees _ Select Name = e.FirstName & " " & e.LastName, Phone = e.HomePhone)
Union还为您提供c
和e
所有内容,但删除了所有重复内容:
(From c In db.Customers _ Select c.Country).Union(From e In db.Employees _ Select e.Country)
除了给你c
中不是e
所有东西:
(From c In db.Customers _ Select c.Country).Except(From e In db.Employees Select e.Country)
这是一个通用联合的示例,不考虑您发布的场景:
var something = (from e in _repository select new { e.Property1, e.Property2 }).Union( (from e in _repository select new { e.Property1, e.Property2 }));
有101个Linq样本 – 有两个联合样本Union1和Union2
这个Linq语句应该会得到与SQL相同的结果:(它在测试记录集中对我有用)
上述就是C#学习教程:如何将sql union转换为linq分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
var results = (from a in (from d in DiscountPromotions group d by d.BarCode into g select new { BarCode = g.Key, AmountTaken = g.Sum(p => p.AmountTaken) }).Union(from i in ItemSaleTransactions group i by i.BarCode into o select new { BarCode = o.Key, AmountTaken = o.Sum(i => i.AmountTaken) }) group a by a.BarCode into b select new { BarCode = b.Key, AmountTaken = b.Sum(c => c.AmountTaken) });
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/958282.html