c# – 需要linq查询才能返回最后100个结果
发布时间:2020-12-15 23:42:21 所属栏目:百科 来源:网络整理
导读:我正在搜索一个sql server数据库,显然它返回的数量超过了应用程序可以处理的数量.我正在回到许多结果的路上,我需要最小化发回的记录数,然后告诉用户他们选择了太多. 这是我有的: private ListLog SearchLog(){ try { using (var model = new SuburbanPortal
我正在搜索一个sql server数据库,显然它返回的数量超过了应用程序可以处理的数量.我正在回到许多结果的路上,我需要最小化发回的记录数,然后告诉用户他们选择了太多.
这是我有的: private List<Log> SearchLog() { try { using (var model = new SuburbanPortalEntities()) { var qry = from logs in model.Logs where logs.LogDateTime > dateTimePicker_Start.Value && logs.LogDateTime < dateTimePicker_End.Value select logs; Guid tokenid; if (Guid.TryParse(textBox_TokenId.Text,out tokenid)) { qry = qry.Where(x => x.TokenId == tokenid); } if (!string.IsNullOrEmpty(textBox_SessionId.Text)) { qry = qry.Where(x => x.SessionId == textBox_SessionId.Text.ToLower()); } if (!string.IsNullOrWhiteSpace(textBox_Contains.Text)) { qry = qry.Where(x => x.Message.Contains(textBox_Contains.Text)); } if (checkedListBox_DisplayFilter.GetItemChecked(0)) { qry = qry.Where(x => x.IsWarning); } if (checkedListBox_DisplayFilter.GetItemChecked(1)) { qry = qry.Where(x => x.IsException); } var sourceEnumList = new List<string>(); if (checkBox_WebPortal.Checked) { sourceEnumList.Add("WebPortal"); } if (checkBox_SubService.Checked) { sourceEnumList.Add("SubService"); } if (checkBox_TruckRouting.Checked) { sourceEnumList.Add("TruckRouting"); } if (checkBox_SuburbanHub.Checked) { sourceEnumList.Add("SuburbanHub"); } if (sourceEnumList.Any()) { qry = qry.Where(x => sourceEnumList.Contains(x.SourceEnum)); } qry = qry.OrderByDescending(x => x.LogDateTime); return qry.ToList(); } } catch (Exception ex) { MessageBox.Show("Error: " + ex.Message); return null; } } 如何获取最新的100条记录,并告诉用户他们需要优化搜索? 谢谢! 解决方法
您可以使用
Take 方法
return qry.Take(100).ToList(); 如果你没有按降序对记录进行排序,这将给你前100条记录.但是我看到你已经做了排序,所以这应该给你正确的结果.无论如何,如果你想删除OrderBy这里是一个行版以避免混淆: return qry.OrderByDescending(x => x.LogDateTime).Take(100).ToList(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |