low*_*ern 26 c# sql linq union
我有一个使用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
Run Code Online (Sandbox Code Playgroud)
请注意,原始SQL正在 合并 2个选择NOT连接它们.我需要知道如何合并结果,即删除重复项,并根据条形码对存在重复的行数值求和.
Ami*_*rma 36
三个有用的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)
Run Code Online (Sandbox Code Playgroud)
联盟也为您提供了一切c和e,但是通过删除重复项:
(From c In db.Customers _
Select c.Country).Union(From e In db.Employees _
Select e.Country)
Run Code Online (Sandbox Code Playgroud)
除了给你一切c不在的东西e:
(From c In db.Customers _
Select c.Country).Except(From e In db.Employees Select e.Country)
Run Code Online (Sandbox Code Playgroud)
Ian*_*n P 12
这是一个通用联合的示例,不考虑您发布的场景:
var something =
(from e in _repository
select new { e.Property1, e.Property2 }).Union(
(from e in _repository
select new { e.Property1, e.Property2 }));
Run Code Online (Sandbox Code Playgroud)
有101个Linq样本 -带有两个联合样本Union1和Union2
此Linq语句应为您提供与SQL相同的结果:(对我而言,它在测试记录集中)
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)
});
Run Code Online (Sandbox Code Playgroud)