C# 值相同时不执行LINQ求和
我需要从2个LINQ查询开始对相同类型的元素进行求和 下面是我的代码:C# 值相同时不执行LINQ求和,c#,linq,C#,Linq,我需要从2个LINQ查询开始对相同类型的元素进行求和 下面是我的代码: var query1 = from d in _contextProvider.Context.Documents where d.TransportId == transportId group d by d.Type into dg sel
var query1 = from d in _contextProvider.Context.Documents
where d.TransportId == transportId
group d by d.Type
into dg
select new { DocumentType = dg.Key.ToString(), DocumentCount = dg.Count() };
var query2 = from n in _contextProvider.Context.NotificationDocuments
where n.TransportId == transportId
group n by n.TransportId
into nd
select new { DocumentType = "Notification", DocumentCount = nd.Count() };
var query_collapsed = query1.Union(query2)
.GroupBy(p => new { DocumentType = p.DocumentType })
.Select(g => new DocumentCounters() { DocumentType = g.Key.DocumentType, DocumentCount = g.Sum(p => p.DocumentCount) });
示例:下面让我们分析DocumentType
等于Notification
的值
查询1的值:
查询2的值:
折叠的查询:
这是正确的:1+2=3
问题:我注意到,每当查询1中的通知
计数等于查询2中的通知
计数时,就不会执行求和
例如:
2+2=2
或
3+3=3
有什么想法吗?LINQ
Union
将删除重复条目。如果要合并这两个序列,可以像这样使用Concat
:
var query_collapsed = query1.Concat(query2)
.GroupBy(p => new { DocumentType = p.DocumentType })
.Select(g => new DocumentCounters() { DocumentType = g.Key.DocumentType, DocumentCount = g.Sum(p => p.DocumentCount) });
LINQ
Union
将删除重复的条目。如果要合并这两个序列,可以像这样使用Concat
:
var query_collapsed = query1.Concat(query2)
.GroupBy(p => new { DocumentType = p.DocumentType })
.Select(g => new DocumentCounters() { DocumentType = g.Key.DocumentType, DocumentCount = g.Sum(p => p.DocumentCount) });
LINQ
Union
将删除重复的条目。如果要合并这两个序列,可以像这样使用Concat
:
var query_collapsed = query1.Concat(query2)
.GroupBy(p => new { DocumentType = p.DocumentType })
.Select(g => new DocumentCounters() { DocumentType = g.Key.DocumentType, DocumentCount = g.Sum(p => p.DocumentCount) });
LINQ
Union
将删除重复的条目。如果要合并这两个序列,可以像这样使用Concat
:
var query_collapsed = query1.Concat(query2)
.GroupBy(p => new { DocumentType = p.DocumentType })
.Select(g => new DocumentCounters() { DocumentType = g.Key.DocumentType, DocumentCount = g.Sum(p => p.DocumentCount) });
Union
将只保留不同的项。我认为如果要在结果集合中保留重复项,需要使用Concat
而不是Union
@JurgenCamilleri是对的,使用Concat
而不是Union
,这是正确的。谢谢大家。Union
将只保留不同的项。我认为如果您想在结果集合中保留重复项,您需要使用Concat
而不是Union
。@JurgenCamilleri是对的,使用Concat
而不是Union
,这是正确的。谢谢大家。Union
将只保留不同的项。我认为如果您想在结果集合中保留重复项,您需要使用Concat
而不是Union
。@JurgenCamilleri是对的,使用Concat
而不是Union
,这是正确的。谢谢大家。Union
将只保留不同的项。我认为如果您想在结果集合中保留重复项,您需要使用Concat
而不是Union
。@JurgenCamilleri是对的,使用Concat
而不是Union
,这是正确的。谢谢大家。