一起添加两个Lambda / Linq查询

时间:2013-12-20 11:22:19

标签: c# linq lambda

我有以下代码,它为我提供了一组结果,然后是另一个(resultsSetup),如果满足条件则完全相同。

// use Linq to query the downtime data
var results = from t in this.MachineEvent.Transactions.OfType<Logic.DowntimeScrapTransaction>()
                where t.TransactionType == Logic.Enums.MachineEventTransactionType.DowntimeScrapTransaction
                group t by t.Reason.Group into grps
                let totalDowntime = grps.Sum(g => g.DowntimeDuration.TotalMinutes)
                orderby totalDowntime descending
                select new { Key = grps.Key, values = grps, TotalDownTime = grps.Sum(g => g.DowntimeDuration.TotalMinutes) };


if (this.MachineEvent.MachineState == Logic.Enums.MachineState.Production)
{
    var resultsSetup = from t in this.MachineEvent.GetSetupMachineEvent().Transactions.OfType<Logic.DowntimeScrapTransaction>()
                        where t.TransactionType == Logic.Enums.MachineEventTransactionType.DowntimeScrapTransaction
                        group t by t.Reason.Group into grps
                        let totalDowntime = grps.Sum(g => g.DowntimeDuration.TotalMinutes)
                        orderby totalDowntime descending
                        select new { Key = grps.Key, values = grps, TotalDownTime = grps.Sum(g => g.DowntimeDuration.TotalMinutes) };

    results.Concat(resultsSetup);
    results.Union(resultsSetup);
}

我想要做的只是将这两个结果结合在一起。正如您所看到的,我已经尝试了ConcatUnion方法,但我也没有成功。

3 个答案:

答案 0 :(得分:3)

  

正如您所看到的,我已经尝试了ConcatUnion方法,但我也没有成功。

这是因为你忽略了它们的返回值。你应该做的

results = results.Concat(resultsSetup);

如果您要将resultsSetup的所有项目追加到results

results = results.Union(resultsSetup);

如果您想获得一个联盟(即删除所有重复项)。

答案 1 :(得分:1)

我想你的意思是说:

results = results.Concat(resultsSetup);

答案 2 :(得分:1)

试试这个......

results = results.Union(resultsSetup);