gpt4 book ai didi

c# - 需要 linq 查询只返回最后 100 个结果

转载 作者:行者123 更新时间:2023-11-30 13:31:24 24 4
gpt4 key购买 nike

我正在搜索一个 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();

关于c# - 需要 linq 查询只返回最后 100 个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21857106/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com