我目前正在试图从三个不同的表牵引结果,并将它们合并成一个列表,像这样...LINQ的Concat的优化
var accountLogs = Context.AccountLogs.Where(s => s.Timestamp > fromDate).Select(s => new LogSummaryDto()
{
UserId = s.User.Id,
DisplayName = s.User.DisplayName
});
var spellLogs = Context.SpellLog.Where(s => s.Timestamp > fromDate).Select(s => new LogSummaryDto()
{
UserId = s.User.Id,
DisplayName = s.User.DisplayName
});
var generalLogs = Context.Log.Where(s => s.Timestamp > fromDate).Select(s => new LogSummaryDto()
{
UserId = s.User.Id,
DisplayName = s.User.DisplayName
});
var m1 = accountLog.Concat(spellLogs);
var m2 = m1.Concat(generalLogs).toList();
不过,我敢肯定,必须有使用LINQ to某种方式这是一个查询,任何想法/指针?
如果该查询返回正确的结果,那很好,由于LINQ的延迟执行,您只执行一个查询在这里。其实你甚至没有在你的代码中执行它。使用'foreach'或用'm1.Concat(generalLogs).ToList();'创建一个集合。然后查询将被执行。 –
@ChrisF你可以做得更好:'m1 = accountLog.Concat(spellLog).Concat(generalLogs)',不使用'm2'! :)只是在开玩笑 –
@TimSchmelter已经回答了这个问题,迄今为止最快的解决方案就是它的原型。 –